[英]tkinter keyboard interrupt isn't handled until tkinter frame is raised
我有一個用python + tkinter編寫的GUI應用程序。 在我的工作流程中,我通常從命令行啟動gui,在gui中做一些事情,然后我發現自己導航到其他終端窗口來做一些工作。 不可避免地,我想在某個時候關閉GUI,並且出於習慣,我經常只是導航到啟動GUI的終端並發送KeyboardInterrupt(Ctrl-c)。 但是,直到我在窗口管理器中舉起GUI窗口時,才收到此中斷。 有誰知道為什么會這樣嗎? 如果gui是在單個函數中啟動的,那么有沒有簡單的解決方法-可能是multiprocessing
?
來自新聞組:
我在Redhat Linux 5.0下使用Python 1.5。 我正在嘗試找出使用tkinter時捕獲SIGINT(或Ctrl-C)的最佳方法。 為了說明我的問題,請執行以下操作...
-在啟用tkinter的情況下構建Python-1.5。
-進入Python-1.5構建樹下的Demo / tkinter / guido目錄。
-輸入“ python imageview.py image-file”,其中“ image-file”是可顯示圖像的完整路徑名。
-彈出圖像后,請確保xterm窗口保持了窗口焦點,xterm窗口剛剛從該窗口中調用了“ python ...”命令。
-按Ctrl-C。
此時,什么也沒有發生。 Ctrl-C似乎被忽略了。 但現在 ...
-無需再按鍵盤上的任何鍵,而是將窗口焦點設置為顯示的圖像窗口。
該窗口一獲得焦點,Ctrl-C就會生效。
我的問題是:是否可以重組“ imageview.py”程序,使其立即響應SIGINT(Ctrl-C),而不必首先將窗口焦點設置為顯示的圖像?
在此先感謝您提供的任何幫助。
您所看到的是由信號處理程序的處理方式引起的。 您陷入了Tcl / Tk主循環中,信號處理程序僅由Python解釋器處理。 一個快速的解決方法是使用after()安排一個虛擬函數每秒調用一次-這似乎使您的信號得到及時處理。
-吉多·范·羅蘇姆(Guido van Rossum)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.