爲什麼不能使用Ctrl + C如何破解一個使用PyQt的Python程序?我想調試它並獲得堆棧跟蹤,由於某種原因,這比使用C++更難!Ctrl-C無法與PyQt配合使用
回答
CTRL + C導致一個信號被髮送到 的過程。 Python捕獲信號 ,並設置一個全局變量, ,類似於CTRL_C_PRESSED = True。 然後,每當Python解釋器 得到執行一個新的操作碼時,它會看到 變量集並引發一個 KeybordInterrupt。
這意味着CTRL + C僅在Python解釋器旋轉的 時有效。如果 解釋器正在執行用C編寫的 擴展模塊 執行長時間運行操作,CTRL + C將不會中斷它,除非它 明確地與Python「合作」。例如:time.sleep()理論上是一個 阻止操作,但 該函數的實現 「與Python 解釋器」配合「使CTRL + C工作。
這是全部設計:CTRL + C意味着 做一個「乾淨的中止」;這就是爲什麼它 變成 Python的異常(以便在堆棧展開期間執行清理操作的 )以及 支持的擴展模塊的排序爲012-「opt-in」。如果您想完全中止該過程,但不給它一個清理的 機會,則可以使用CTRL +。
當Python調用的QApplication :: EXEC() (C++函數),Qt不知道 如何 「合作」 與Python的 CTRL + C,這就是爲什麼它不 工作。我認爲 沒有一個好辦法「讓它工作」;如果您可以通過全局 事件過濾器處理它,您可能希望看到 。 - Giovanni Bajo
將此添加到主程序解決了問題。
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
我不確定這與解釋有什麼關係。
我不知道這是幹什麼的,但它確實可以工作!編輯:讀一下它[這裏](https://docs.python.org/3/library/signal.html)所以它說,SIGINT(= Ctrl + C)應該執行默認操作(=退出) 。 – z3ntu 2016-07-23 11:42:36
我同意尼爾·G,並想補充一點:
如果你不電話 QApplication.exec_()啓動事件循環,而是在一個交互式的Python Shell執行程序(使用python -i),pyqt會在交互提示符等待時自動處理事件,並且Ctrl-C應該再次按預期行事。這是因爲Qt事件循環將與python解釋器共享時間,而不是單獨運行,從而使解釋器有機會捕獲這些中斷。
- 1. 宏無需選擇CtrlC
- 2. PHP無法與SQLite配合使用
- 3. IBAction無法與UITapGestureRecognizer配合使用
- 4. Annotation_raster無法與scale_x_reverse配合使用
- 5. Ajax無法與Rails3.2配合使用
- 6. OnItemClickListener無法與LocationManager配合使用
- 7. Primefaces Carousel無法與ScrollPanel配合使用
- 8. Capistrano/rails無法與rvm配合使用
- 9. Bootstrap Scrollspy無法與Rails配合使用
- 10. 無法與SplitViewNavigator容器配合使用
- 11. sIFR無法與Adobe CS4配合使用
- 12. Google Adsense無法與Drupal配合使用
- 13. 無法配置PyQt的
- 14. 無法在IIS7.5上使用ELMAH與ASP.NET MVC2配合使用
- 15. 無法使用Resharper 6.0與xUnit.net配合使用
- 16. 無法使用mvc mini profiler與EF 4.2配合使用
- 17. 無法使IAMStreamConfig.SetFormat()與LifeCam Studio配合使用
- 18. 我無法使用useDelimiter()進行配合
- 19. wkhtmltoimage無法與CentOs上的websnap/imgkit配合使用
- 20. PySpark中的ParamGridBuilder無法與LinearRegressionSGD配合使用
- 21. OpenID在升級到ver4後無法與DotNetOpenAuth配合使用
- 22. 在網格上,CheckboxModel無法與分組配合使用
- 23. word 2007插件安裝無法與word 2010配合使用
- 24. 無法讓Cloud 9與Google Compute Engine配合使用
- 25. 爲什麼NSUserDefaults無法與Firebase配合使用
- 26. 啓動進程無法與VSIXInstaller.exe配合使用
- 27. PyCharm中斷異常無法與Theano配合使用
- 28. 無法獲取Enyim.Caching MemcachedClient與Couchbase配合使用
- 29. 無法將HTTPS與ServerXMLHTTP對象配合使用
- 30. Prism V2無法與Silverlight 3.0配合使用
你正在使用哪個操作系統? – 2011-03-01 21:35:19
你應該使用谷歌;-) [你的問題解決方案解釋](http://www.mail-archive.com/[email protected]/msg13757.html) – user225312 2011-03-01 21:36:22
@A A-尼斯!我認爲這是一個Ctrl + C與Ctrl + D的情況。 – 2011-03-01 21:37:41