从Tkinter首次挂起全屏幕进程

时间:2015-07-29 12:22:35

标签: python tkinter

我正在Python 2.6中编写一个游戏启动菜单,它使用subprocess.popen()来运行您选择的游戏。我的问题是,我第一次从菜单中运行任何游戏时,它会挂起:我在我的Python应用程序上获得了一小时玻璃,而我发布的游戏什么也没做。我看到任务栏上的游戏图标,但点击它什么也没做。我必须在任务管理器中杀死游戏的进程。在发生这种情况之后,我可以启动任何游戏,包括我遇到问题的游戏,它运行正常。我甚至可以从我的Python应用程序退出并重新运行它,我没有问题。但是重启后我会再次遇到这个问题。我已经将违规代码缩小到:

import os
import subprocess
from Tkinter import *
def reportEvent(event):
    if event.keysym == "Alt_L":
        os.chdir("\\path\\to\\game")
        si = subprocess.STARTUPINFO()
        si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
        subprocess.Popen("game.exe",    startupinfo=si).wait()
root = Tk()
root.option_readfile("optionDB")
root.bind('<KeyPress>', reportEvent)
root.mainloop()

以下代码没有此问题(初始化TK但不使用其主循环):

import os
import subprocess
from Tkinter import *
root = Tk()
root.option_readfile("optionDB")
os.chdir("\\path\\to\\game")
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
subprocess.Popen("game.exe", startupinfo=si).wait()

我可以使用我的启动器打开非全屏(窗口)应用程序,而不会出现此问题。它只适用于全屏游戏。有任何想法吗?谢谢。

编辑:根据下面的建议,我在Python 3.4中尝试了相同的代码,但我仍然有相同的行为。

0 个答案:

没有答案