【发布时间】:2014-04-07 07:31:59
【问题描述】:
我有一个带有 Piface 适配器板的 Raspberry Pi。我制作了一个 GUI 来控制 Piface 板上的 LED。 GUI 上的一个按钮会打开一个新窗口,按下按钮后,该窗口会启动和停止运行一小段代码,以使 LED 连续上下运行,就像 Knight Riders 的汽车一样,使用线程中的 While 循环。 在这个新窗口中,我添加了一个退出按钮。我想添加一段代码,当我单击 EXIT 按钮时将关闭新窗口,然后返回主窗口。 我查了很多例子,但不太明白我应该放什么或放在哪里。我试过“退出”,但它关闭了整个程序。 在查看了许多示例后,我可能以不太正确的方式创建新窗口,因此请随时告诉我是否有更好的方法。
那么有没有更好的方法呢?任何指针将不胜感激。
提前致谢。
这是一段代码......
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?
【问题讨论】:
标签: python windows tkinter raspberry-pi exit