我有一个Tkinter
应用程序,它使用网络服务器(Bottle
)来显示一些数据。当前设置是在应用程序中使用Web服务器启动Process
。不幸的是,这是我发现允许Windows应用程序和Bottle
分别运行.mainloop()
和.run()
的唯一方法。该应用程序的骨架位于
# main application file
import Tkinter as tk
from multiprocessing import Process
import testb
class App():
def __init__(self):
self.msg = "hello"
self.root = tk.Tk()
self.callback()
def callback(self):
# things happen here
self.root.after(10000, self.callback)
if __name__ == "__main__":
app = App()
proc = Process(target=testb.WebServer, args=(app.msg,))
proc.start()
app.root.mainloop()
和
# this is the testb.py imported above
import bottle
class WebServer():
def __init__(self, msg):
self.msg = msg
bottle.route('/', 'GET', self.main)
bottle.run(host='0.0.0.0', port=8080, debug=False, quiet=True)
def main(self):
return self.msg
我想要做的是摆脱Process
(主要是为了简化实际应用程序中的代码和逻辑)并使其成为主服务器作为主应用程序的一部分运行。我意识到我有两个"悬挂实体" (UI和Web服务器都在不断地等待事件)但也许有一种方法可以同时运行这些活动?
注意:我实际上是想摆脱a previous solution discussed some months ago。