|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我用tkinter做了个发包的计数器(暂时是界面)
为了能在界面实时刷新数字计数,多做了个线程。但是我在关闭界面的时候,给我报了个错
界面
报错
我在代码里面有写析构方法,__del__(),准备在我关闭界面的时候,将循环变量设置为False,然后关闭循环。但是好像没效果。
虽然这个报错不影响我什么,但是有报错就是不爽,求大神能提供个思路,解决这种报错
- from tkinter import *
- import threading
- import time
- class Gui:
- def __init__(self):
- self.root = Tk()
- self.frame = Frame(self.root)
- self.resFrame = Frame(self.root, )
- self.dataCount = StringVar()
- self.gpsCount = StringVar()
- self.flag = True
- threading.Thread(target=self.Count).start()
- self.Draw()
- def Draw(self):
- # 第一行,IP,端口
- Label(self.frame, text='IP').grid(row=0, column=0)
- self.eIP = Entry(self.frame)
- self.eIP.grid(row=0, column=1)
- Label(self.frame, text='Port').grid(row=0, column=2)
- self.ePort = Entry(self.frame, width=5)
- self.ePort.grid(row=0, column=3)
- Label(self.frame, text=' ').grid(row=0, column=4)
- Button(self.frame, text='Start', bd=1, width=10 ,command=self.submit).grid(row=0, column=5)
- # 下面的计数器
- Label(self.resFrame, text='Start time : ').grid(row=0, column=0)
- Label(self.resFrame, text=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())).grid(row=0, column=1)
- Label(self.resFrame, text='Elapsed Time : ').grid(row=1, column=0)
- self.cLB = Label(self.resFrame, textvariable=self.dataCount)
- self.cLB.grid(row=1, column=1)
- Label(self.resFrame, text='Send total data : ').grid(row=2, column=0)
- self.dLB = Label(self.resFrame, textvariable=self.gpsCount)
- self.dLB.grid(row=2, column=1)
- self.frame.pack(padx=10, pady=10)
- self.resFrame.pack()
- mainloop()
- def Count(self):
- day, h, m, s = 0, 0, 0, 0
- count = 0 #测试下计数
- while self.flag:
- count += 1
- s += 1
- time.sleep(1)
- if(60 == s):
- m += 1
- s = 0
- elif(60 == m):
- h += 1
- m = 0
- elif(24 == h):
- day += 1
- h = 0
- self.dataCount.set('%02d day %02d:%02d:%02d' % (day, h, m, s))
- self.gpsCount.set(count)
- def __del__(self):
- self.flag = False
- def submit(self):
- print(self.eIP.get(), self.ePort.get())
- g = Gui()
复制代码 |
|