Tkinter和Twisted - 在Python中创建一个deamonic reactor#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tkinter和Twisted - 在Python中创建一个deamonic reactor#相关的知识,希望对你有一定的参考价值。

我试图使用tkinter并在python 3中扭曲。我已经按照这个答案,Threading With Twisted and Tkinter,它允许我让它运行。

但问题是当代码崩溃或用户关闭时,反应堆不会停止。如何设置它以使reactor成为tkinter程序的守护程序。到目前为止,当我关闭tkinter gui时,我试图让它关闭反应堆,这不是理想的行为(因为我想在任何失败的情况下都关闭),但如果我能得到它,那将是第一步上班。

我的代码如下

from twisted.internet import reactor, protocol
import tkinter as tk
import tksupport
import GUI 
def on_closing():
    reactor.stop()
    tksupport.uninstall()
    root.destroy()


root = GUI.BruGUI()
tksupport.install(root)
root.protocol("WM_DELETE_WINDOW", on_closing)
reactor.run()

tksupport代码来自上一个链接。

答案

一种简单的方法是将它放在try / except块中,但这通常只是一种解决方法:

try:
    from twisted.internet import reactor, protocol
    import tkinter as tk
    import tksupport
    import GUI 
    def on_closing():
        reactor.stop()
        tksupport.uninstall()
        root.destroy()


    root = GUI.BruGUI()
    tksupport.install(root)
    root.protocol("WM_DELETE_WINDOW", on_closing)
    reactor.run()

except:
    reactor.stop()
    tksupport.uninstall()
    root.destroy()

以上是关于Tkinter和Twisted - 在Python中创建一个deamonic reactor#的主要内容,如果未能解决你的问题,请参考以下文章

制作python程序,直到Twisted延迟返回值

转载 twisted--何为异步

Python pip安装Scrapy,报错Twisted

Python Twisted介绍

python网络框架Twisted

Python SSH服务器(twisted.conch)命令过滤和端口转发