在pygame中获取初始文本输入的最简单方法

时间:2011-07-11 21:22:01

标签: python user-interface tkinter pygame

所以,我有一个pygame应用程序。现在,它需要一个命令行参数来指定显示主屏幕的显示。但是,我在Windows上运行它,很难为图形应用程序指定命令行输入。

所以,我想要一个非常非常简单的弹出对话框,提示用户输入一个整数,然后关闭。我的研究表明,pygame不能像这样做一个对话框,我无法在pygame窗口中输入,因为程序还不知道哪个监视器可以绘制pygame窗口。

所以,我的问题是,创建输入对话框的最简单方法是什么?我看过wx和tkinter。我可以使用其中任何一个,但我想知道的是,但我想导入最少数量的额外工具包。即我不想启动wx主循环,所以我可以创建一个对话框,然后关闭它,然后启动一个全新的pygame窗口。

我知道如何在wx中执行此操作,所以我主要是寻找关于哪个工具包最简单的建议/想法,而不是关于如何实际执行它的指示(尽管这也总是很好)。

3 个答案:

答案 0 :(得分:1)

更好的解决方案可能是假设您要使用第一台显示器。在游戏中,您可以拥有一个配置选项,您可以将其保存到下次要读取的配置文件中,用户可以选择该选项。如果用户确定您的应用程序位于错误的监视器上,则应通知他们必须重新启动应用程序才能使更改生效。

您还可以在文档中加入醒目的注释,说明配置选项是什么以及如何设置它以防用户在第一次启动应用程序之前需要(或需要)这样做。

编辑:

如果你已经死了,你可以将你的应用程序编写为两个应用程序,如下所示:

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

答案 1 :(得分:1)

由于tkinter内置于Python中,因此可能更好。我更喜欢wx,但如果你只想要几个对话,tkinter就可以了。

您也可以尝试raw_input('type "1" for low res, "2" for high res')。我认为它会在Windows中显示一个对话框窗口。

答案 2 :(得分:1)

这可能是一种丑陋的方式,但我最终做的是使用win32扩展。我在这里找到了一个基类:

http://www.java2s.com/Open-Source/Python/Windows/pyExcelerator/pywin32-214/pythonwin/pywin/mfc/dialog.py.htm

我已经在使用它们,所以我不需要导入任何新包。也就是说,这可能不是一个好的通用解决方案...