我正在开发一个图形应用程序,在运行开始时,我想向用户询问一个配置问题。图形框架(Panda3D)有丑陋的默认对话框,所以我想使用类似tkInter的东西来提供模态对话框。我试过这个:
import Tkinter
import tkMessageBox
root = Tkinter.Tk()
# hide the root window
root.withdraw()
config.PLAY_MUSIC = tkMessageBox.askyesno( "My App",
"Would you like this app to play music from your iTunes collection?" )
root.destroy()
这就是我想要的,但它似乎将所有进一步的键盘事件路由到tkInter而不是我的Panda3D应用程序。在此对话框后,我无需再使用tk做任何事情。
我想把tk对话框放到一个单独的应用程序链接到我的,我想,但我想知道是否有办法杀死tk并让键盘恢复而不完全退出我的应用程序。
更新:尝试了root.quit(),它确实让键盘恢复了,但是我从程序退出时遇到“致命的Python错误:PyEval_RestoreThread:NULL tstate”崩溃,这是不理想的。
答案 0 :(得分:1)
你试过了吗?
<强> grab_release(个体)强>
这样做:如果当前设置,则为此小部件发布抓取。
其中“抓取将所有事件指向此及后代 应用程序中的小部件。“
如:
root.grab_release()
希望你没试过这个。