4

我无法让一个非常简单的 pygame 脚本工作:

import pygame

class MainWindow(object):

    def __init__(self):
        pygame.init()

        pygame.display.set_caption('Game')
        pygame.mouse.set_visible(True)
        # pygame.mouse.set_visible(False) # this doesn't work either!

        screen = pygame.display.set_mode((640,480), 0, 32)

        pygame.mixer.init()

        while True:
            print pygame.mouse.get_pos()

        pygame.mixer.quit()
        pygame.quit()

MainWindow()

当我在窗口周围移动鼠标时,这只会输出 (0,0):

(0, 0)
(0, 0)
(0, 0)
(0, 0)
(0, 0)

任何人都可以检查这个吗?

编辑 - 固定代码:

import pygame

class MainWindow(object):

    def __init__(self):
        pygame.init()

        pygame.display.set_caption('Game')
        pygame.mouse.set_visible(True)
        # pygame.mouse.set_visible(False) # this doesn't work either!

        screen = pygame.display.set_mode((640,480), 0, 32)

        pygame.mixer.init()

        while True:
            for event in pygame.event.get():
                if event.type == pygame.MOUSEMOTION:
                    print pygame.mouse.get_pos()

        pygame.mixer.quit()
        pygame.quit()

MainWindow()
4

2 回答 2

5

Pygame 将在运行时不断地发送事件。这些需要以某种方式处理,否则 pygame 将挂起并且不执行任何操作。修复它的最简单方法是将其添加到主循环中:

...
    while True:
        for event in pygame.event.get():
            pass                                             
        print pygame.mouse.get_pos()
...
于 2013-04-29T18:53:29.600 回答
1

我以前从未使用过这个,但我发现

Pygame:鼠标特定轴检测

您需要等到事件发生。我假设这会清空堆栈并允许您稍后获取数据。

for event in pygame.event.get()
于 2013-04-29T19:04:01.873 回答