2010-10-08 146 views
1

我正在開發圖形應用程序,並且在運行開始時我想問用戶一個配置問題。圖形框架(Panda3D)具有醜陋的默認對話框,所以我想使用類似tkInter的東西來提供模式對話框。我嘗試這樣做:從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對話框到一個單獨的應用程序,鏈到我的,我想,但我不知道是否有一種方法殺死傳統知識和獲取鍵盤背面沒有完全退出我的應用程序。

更新:嘗試root.quit(),似乎得到的鍵盤迴來,但我從我的程序退出時,得到一個「致命的Python錯誤:PyEval_RestoreThread:NULL tstate」崩潰,這是不理想的。

回答

1

您是否嘗試過:

grab_release(個體經營)
哪些呢:發佈搶了這個小工具,如果當前設置。

其中「抓取將所有事件引導到此應用程序的小部件和後代 小部件」。

爲:

root.grab_release() 

希望你有沒有試過這一個。

+0

與root.quit()相同的結果,但無論如何感謝。 – 2011-03-07 21:41:42