【问题标题】:Integer variables not updating in python整数变量未在python中更新
【发布时间】:2014-12-24 19:01:18
【问题描述】:

在我的代码开始时,我创建了两个变量

WINDOW_WIDTH = 400
WINDOW_HEIGHT = 300

稍后,在 def main() 中,如果事件以下列方式发生,我会更改它们

while True:

    for event in pygame.event.get():
        if event.type == VIDEORESIZE:
            DISPLAY = pygame.display.set_mode(event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE)
            # Here, the integers are supposed to be being changed
            WINDOW_WIDTH, WINDOW_HEIGHT = DISPLAY.get_size()
            print("%d, %d" % (WINDOW_WIDTH, WINDOW_HEIGHT))

 drawArena()

更改下方的打印语句表明已进行更改。然后在 drawArena() 我执行以下操作:

print("Drawing (%d, %d)" % (WINDOW_WIDTH, WINDOW_HEIGHT))

但是窗口高度和窗口宽度没有改变,和第一次初始化时的值一样。

【问题讨论】:

  • 也许您忘记在更改变量的代码中将变量声明为global
  • @FrédéricHamidi 这修复了它。谢谢你。我不知道python的这个特性,因为我是这门语言的新手。
  • 在 Python(和大多数其他语言)中,避免使用全局变量被认为是一种很好的风格,因为它们会干扰模块化。但我猜,使用全局变量来处理窗口大小等问题是可以接受的。

标签: python pygame


【解决方案1】:

你需要声明这些变量是全局的

global WINDOW_HEIGHT,WINDOW_WIDTH
while True:
    for event in pygame.event.get():
        if event.type == VIDEORESIZE:
            DISPLAY = pygame.display.set_mode(event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE) # Here, the integers are supposed to be being changed
            WINDOW_WIDTH, WINDOW_HEIGHT = DISPLAY.get_size()
            print("%d, %d" % (WINDOW_WIDTH, WINDOW_HEIGHT))

drawArena()

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多