代码之家  ›  专栏  ›  技术社区  ›  Russell Borogove

从tkinter取回键盘

  •  1
  • Russell Borogove  · 技术社区  · 15 年前

    我正在开发一个图形应用程序,在运行开始时,我想问用户一个配置问题。图形框架(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并取回键盘。

    更新:已尝试根。退出,这似乎确实使键盘恢复正常,但我在退出程序时遇到“致命的Python错误:PyEval_RestoreThread:NULL tstate”崩溃,这并不理想。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Marlen T. B.    15 年前

    你试过了吗:

    抓取释放(自我)
    其中: 释放此小部件的抓取(如果当前已设置)。

    在哪里? “抓取将所有事件指向这个和后代 应用程序中的小部件。”

    如所示:

    root.grab_release()
    

    希望你没试过这个。