我正在尝试创建一个有两个按钮的程序" stop"和"去。" "去"反复打印"跑步"每5秒钟直到按钮"停止"被压了。这可以在python 2.7中使用tkinter吗?到目前为止,这是我的代码......
from Tkinter import *
class startGo():
def __init__(self, master=None):
self.master = master
self.displayMain()
self.master.rowconfigure(0, weight=1)
self.master.columnconfigure(0, weight=1)
def fnCreateWidgets(self):
self.frWindow = Frame()
self.frWindow.grid(sticky=N+S+E+W)
self.frWindow.update()
def displayMain(self):
self.cvOne = Canvas(self.master, bd=0, highlightthickness=0)
self.cvOne.grid(row=0, column=0, sticky=N+S+E+W)
self.frmWindowOne = Frame(self.cvOne)
self.master.title("StopGo")
self.master.minsize(100, 100)
self.frmWindowOne.grid()
self.frmWindowOne.btnStop = Button(self.frmWindowOne, text="Stop", font=("MagdaCleanMono", 12), command=self.stop)
self.frmWindowOne.btnStop.grid(row=2, column=1, sticky=EW)
self.frmWindowOne.btnGo = Button(self.frmWindowOne, text="Go", font=("MagdaCleanMono", 12), command=self.go)
self.frmWindowOne.btnGo.grid(row=2, column=1, sticky=EW)
def go(self):
#code
def stop(self):
#code
root = Tk()
app = startGo(root)
root.mainloop()
答案 0 :(得分:1)
简单的例子:
import tkinter as tk
class MyApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Button(self, text="Start", command=self.do_something).pack()
tk.Button(self, text="Stop", command=self.stop).pack()
def do_something(self):
print("Doing Something")
self.after_id = self.after(500, self.do_something)
def stop(self):
self.after_cancel(self.after_id)
if __name__ == "__main__":
app = MyApp()
app.mainloop()
因此,当您按下开始按钮时,它会直接调用该功能
然后调用after函数,将自身作为500ms后运行的目标
在函数完成后,脚本重新进入tkinter mainloop,直到它再次运行为止。
停止脚本,我们使用之前保存的ID取消之后。