簡體   English   中英

在提升tkinter幀之前,不會處理tkinter鍵盤中斷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM