所以,我有一个pygame应用程序。现在,它需要一个命令行参数来指定在哪个显示器上显示主屏幕。但是,我在windows上运行它,在windows上很难为图形应用程序指定命令行输入。
所以,我想有一个非常非常简单的对话框弹出,提示用户输入一个整数,然后关闭。我的研究表明pygame不能做这样的对话框,而且我不能在pygame窗口中输入,因为程序还不知道将pygame窗口绘制到哪个监视器。
那么,我的问题是,创建一个输入对话框的最简单的方法是什么?我调查过wx和tkinter。我可以使用它们中的任何一个,但我想知道的是,我想导入最少数量的额外工具包。也就是说,我不想为了创建一个对话框而启动wx主循环,然后关闭它,然后启动一个全新的pygame窗口。
我知道如何在wx中做到这一点,所以我主要是在寻找关于哪个工具包最简单的建议/想法,而不是关于如何实际做到这一点的指导(尽管这也总是很好)。
因为tkinter是Python内置的,所以它可能更好。我更喜欢wx,但如果你只想要几个对话框,tkinter也可以。
你也可以试试raw_input('type "1" for low res, "2" for high res')
。我想它会在Windows中弹出一个对话窗口。
一个更好的解决方案可能是假设您正在访问第一个监视器。在游戏中,你可以有一个配置选项,你可以将其保存到配置文件中,以便下次读取,用户可以选择。如果用户认为您的应用程序在错误的监视器上,您应该告诉他们,他们必须重新启动您的应用程序以使更改生效。
你也可以在你的文档中显眼的注释说明配置选项是什么以及如何设置它,以防用户想要(或需要)在第一次启动应用程序之前这样做。
编辑:如果你坚决反对,你可以把你的应用写成两个应用,就像这样:
try:
configfile = file("path/to/config")
except IOError:
import Tkinter
# make a tkinter interface to set the screen options
configfile = file("path/to/config", "w)
configfile.write(options)
os.execl("path/to/self")
else:
import pygame
screen = read_config(configfile)
# your pygame code
这可能是一个丑陋的方式,但我最终做的是使用win32扩展。我在这里找到了一个基类:
http://www.java2s.com/Open-Source/Python/Windows/pyExcelerator/pywin32-214/pythonwin/pywin/mfc/dialog.py.htm我已经在使用它们了,所以我不需要导入任何新的包。也就是说,这可能不是一个好的通用解决方案……