The*_*Cog 0 python loops tkinter python-2.7
我正在编写一个计时器应用程序,它遇到了很多困难,但第一个困难是制作一个可以通过按按钮打破的循环。我研究过它,我的研究表明我应该使用线程,但我不知道它是如何工作的。
然后,我决定尝试的是在调用键盘中断时例外,然后创建一个调用同一中断的按钮。但是,当我按 ctrl-c 时,我当前的代码拒绝中断。
我的示例代码如下所示
from Tkinter import *
from sys import exit
class Timer:
def __init__(self, master):
buttonstart = Button(master, text = "Start", fg = "blue", command = self.start)
buttonstart.grid(row = 1, column = 0)
buttonquit = Button(master, text = "Quit", fg = "blue", command= quit)
buttonquit.grid(row = 1, column = 2)
global timertext
timertext = DoubleVar()
timertext.set(0)
display = Label(master, textvariable = timertext)
display.grid(row = 0, column = 0)
timertext.set(timertext)
def timerlogic(self):
pass
def pause(self):
pass
def start(self):
global timertext
try:
while True:
#do things
except KeyboardInterrupt:
print "Interrupted"
def lap(self):
pass
root = Tk()
app = Timer(root)
root.mainloop()
root.destroy()
Run Code Online (Sandbox Code Playgroud)
基本上,我认为我的代码目前不可行,但我不知道如何编辑它以创建一个可以根据需要中断的循环。
小智 5
您将某个变量设置为 True 或 False。另外,while 循环会中断 Tkinter 循环,因此 Tkinter 在 while 循环退出之前不会执行任何操作。请改用 Tkinter 的 after 函数。
from Tkinter import *
##from sys import exit
class Timer:
def __init__(self, master):
self.master=master
buttonstart = Button(master, text = "Start", fg = "blue", command = self.start)
buttonstart.grid(row = 1, column = 0)
buttonquit = Button(master, text = "Quit", fg = "blue", command=self.quitit)
buttonquit.grid(row = 1, column = 2)
self.timertext = DoubleVar()
self.timertext.set(0)
display = Label(master, textvariable = self.timertext)
display.grid(row = 0, column = 0)
## timertext.set(timertext) ## Huh!!
self.timeit=False
def increment_timer(self):
ctr=int(self.timertext.get())
self.timertext.set(ctr+1)
if self.timeit:
self.master.after(500, self.increment_timer)
def start(self):
self.timeit=True
self.increment_timer()
def quitit(self):
self.timeit=False
root = Tk()
app = Timer(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4359 次 |
| 最近记录: |