Вызывающие функции python (pygame)

Я привязываю к загрузке функций, когда, когда я вызываю каждую функцию на экране, она отображает вещи, которые я хочу на экране. У меня проблемы с этой простой программой. Я хотел бы отображать текст на экране, когда я пишу ему. но все его выполнение отображает экран.

import pygame
from pygame.locals import *

pygame.init()

def screen(width,height,name):
 screen = pygame.display.set_mode((600,600))
 screen=pygame.display.set_mode((width,height))
 return screen

def name(name=""):
 pygame.font.init()
 myfont = pygame.font.SysFont("monospace", 15)
 label = myfont.render("Some text!", 1, (255,255,0))
 result=screen(640,480,name).****(label, (100, 100))
 return result

screen(640,480,name("donkey from shrek"))
2 ответа

это то, что происходит (если я правильно понимаю):

  • передать результат имени ("осел из шрека") на экран() [строка 18]
    • name() вызывается [строка 18]
      • name: создает метку [строка 14]
      • имя: экран вызовов [строка 15]
      • screen: создайте новый дисплей и верните его [строка 6-9]
      • name: **** label для возвращаемого отображения [строка 15]
      • верните "****ted" дисплей [строка 16]
  • блуждающий дисплей переходит на экран() [строка 18]
    • screen: не нужно отображать объект в "name" [строка 6-9]
    • screen: создает и возвращает пустой экран [строка 6-9]

Надеюсь, это поможет ;)


На первый взгляд, я считаю, что вы дважды вызываете экранную функцию и создаете два экрана.

Функция "имя" создает экран с меткой. Эта функция вызывается в последней строке вашего кода перед вызовом функции "screen".

Когда в конечном итоге функция "screen" вызывается (снова) в последней строке, это создаст новый экран без метки....

Также функция "экран" не использует аргумент "имя", который присваивается функции. Если вы хотите установить заголовок экрана, я хотел бы обратиться к http://www.pygame.org/docs/ref/display.html#pygame.display.set_caption

licensed under cc by-sa 3.0 with attribution.