【发布时间】:2018-09-06 02:26:04
【问题描述】:
按照here 的建议,我创建了一个单独的类,专门用于 Tkinter。主要功能只是从 Tkinter GUI 获取比例值。虽然我能够获得这些比例值,但在关闭 GUI 后我无法退出程序。我的程序似乎在self.root.mainloop() 即print "mainloop" 被执行后被卡住了。如果我执行以下操作,即如果我不访问 output_q 值,我在终止脚本时没有任何问题
i = 0
while app.run:
print i
i = i+1
下面给出完整的代码
from Tkinter import *
import threading, time, sys, Queue
class App(threading.Thread):
def __init__(self, var):
threading.Thread.__init__(self)
self.output_q = Queue.Queue()
self.start()
def callback(self):
self.run = 0
self.root.quit()
self.root.destroy()
def pub_y(self, val_y):
self.x_val = float(self.y_scale.get())
self.output_q.put((self.x_val, 2, 3))
def run(self):
self.root = Tk()
self.root.protocol("WM_DELETE_WINDOW", self.callback)
self.y_var = DoubleVar()
self.y_scale = Scale( self.root, from_=0, to=1, length=300, label="yaw", resolution=0.0000000000001, variable = self.y_var, orient=HORIZONTAL, command=self.pub_y)
self.y_scale.set(0.5)
self.y_scale.pack(anchor=CENTER)
label = Label(self.root, text="Hello World")
label.pack()
self.root.mainloop()
print "mainloop"
var = 1
input = Queue.Queue()
input.put((1,2,3))
app = App(input)
i = 0
while app.run:
result = app.output_q.get()
print result[0]
sys.exit(0)
有人能指出我可能出错的地方吗?谢谢!
【问题讨论】: