我有一个带有Piface适配器板的树莓派。我制作了一个GUI来控制Piface板上的LED。 GUI上的一个按钮打开一个新窗口,按下按钮后,开始和停止运行一小段代码,使LED持续上下运行,如Knight Riders汽车,在线程中使用While循环。 在这个新窗口中,我添加了一个EXIT按钮。我想添加一段代码,当我单击EXIT按钮时将关闭新窗口,然后返回到主窗口。 我查了很多例子,但不能完全看到我应该放什么或在哪里。我尝试过“退出”,但它关闭了整个程序。 看过很多例子,我可能会以不正确的方式创建新窗口,所以请随时告诉我是否有更好的方法。Python Tkinter - 用退出按钮关闭子窗口
那么有没有更好的方法呢?任何指针将不胜感激。
在此先感谢。
继承人一块代码....
def new_window(self):
print('New Window')
self.newWindow = tk.Toplevel(self.master)
self.app = App2(self.newWindow)
self.newWindow.grab_set() # I added this line to stop opening multiple new windows
class App2:
def __init__(self, master):
frame = Frame(master)
frame.pack()
Label(frame, text='Turn LED ON').grid(row=0, column=0)
Label(frame, text='Turn LED OFF').grid(row=0, column=1)
self.button0 = Button(frame, text='Knight Rider OFF', command=self.convert0)
self.button0.grid(row=2, column=0)
self.LED0 = Label(frame, image=logo2)
self.LED0.grid(row=2, column=1)
self.button9 = Button(frame, text='Exit', command=self.close_window)
self.button9.grid(row=3, column=0)
def convert0(self, tog=[0]):
tog[0] = not tog[0]
if tog[0]:
print('Knight Rider ON')
self.button0.config(text='Knight Rider ON')
t=threading.Thread(target=self.LED)
t.start()
self.signal = True #added to stop thread
self.LED0.config(image = logo)
else:
print('Knight Rider OFF')
self.button0.config(text='Knight Rider OFF')
self.signal = False #added to stop thread
self.LED0.config(image = logo2)
def LED(self):
while self.signal: #added to stop thread
a=0
while self.signal: #added to stop thread
pfio.digital_write(a,1) #turn on
sleep(0.05)
pfio.digital_write(a,0) #turn off
sleep(0.05)
a=a+1
if a==7:
break
while self.signal: #added to stop thread
pfio.digital_write(a,1) #turn on
sleep(0.05)
pfio.digital_write(a,0) #turn off
sleep(0.05)
a=a-1
if a==0:
break
def close_window(self):
print('Close Child window')
#self.newWindow.destroy() Not sure what to put here?
我正在使用new_window代码段来启动App2。如果我将它移入App2,则App2不会启动。我觉得我可能会用错误的方式启动App2。 –
我添加了一个新的方法来启动应用程序。 'App2.start_app()'有趣的想法让应用程序自行启动。我不会想到这一点。 – User
对不起,但我现在失去了,新手综合征。不幸的是我迷惑了自己,我没有清楚地解释它。感谢您的建议和指向替代方案的链接。 –