在没有窗口/GUI 的情况下运行 Pygame
Posted
技术标签:
【中文标题】在没有窗口/GUI 的情况下运行 Pygame【英文标题】:Run Pygame without a window / GUI 【发布时间】:2016-03-24 17:04:30 【问题描述】:是否可以在不创建 pygame 窗口、表面或 GUI 的情况下运行 pygame? 我想使用某些 pygame 功能,但不想弹出 GUI。
例如,除非我在 pygame 中设置了一个窗口,否则此功能将不起作用。
running = True
def mainloop():
while True:
for event in pygame.event.get():
if ( event.type == pygame.QUIT ) or \
( event.type == pygame.KEYDOWN and \
( event.key == pygame.K_ESCAPE) ):
running = False
print "quit"
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
print "working"
【问题讨论】:
【参考方案1】:DrevanTronder 是正确的,但他没有正确回答问题,因为您在询问如何在没有 GUI 的情况下在 pygame 中执行事件,如您的示例编码所示。
这是不可能的。运行 Pygame 程序时,它仅在选择 Pygame 窗口时检测事件。如果没有 Pygame 窗口,则没有可供选择的内容,因此事件将不起作用。以下内容直接来自 Pygame 文档:
“如果显示器尚未初始化且未设置视频模式,则事件队列将无法真正工作。” https://www.pygame.org/docs/ref/event.html
但是,当然,如果您不是专门讨论事件处理,那么 DrevanTronder 是正确的;您需要做的就是使用“import pygame”导入模块并使用“pygame.init()”对其进行初始化。
希望这会有所帮助!
【讨论】:
【参考方案2】:如果你运行的是 Linux,你可以使用Xvfb。
基本上,Xvfb “捕获”所有与显示相关的计算,并在内存中执行它们,而无需显示。
它可能不适合您的目的,具体取决于您的操作系统的行为。仅当 PyGame 窗口是活动窗口但看到您无法在此处设置活动窗口时,才能在 PyGame 中捕获键,如果没有其他解决方法,这可能无法工作。
【讨论】:
【参考方案3】:是的,你可以。
import pygame
pygame.init()
while 1:
print pygame.time.get_ticks()
pygame.time.wait(10)
这将为您提供自 pygame 启动以来没有弹出 GUI 的时间(以毫秒为单位)。
【讨论】:
以上是关于在没有窗口/GUI 的情况下运行 Pygame的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 GUI 的情况下运行 makecert.exe?