python - tk入口中跟踪数据的ttk进度条
问题描述
我一直在尝试跟踪 tk 条目是否为空......我现在有点困惑,如果 tk 库中有更好的工具......这是一个示例代码:
import threading
from tkinter import ttk
import tkinter as tk
class progress_track(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.ent1 = tk.Entry(self)
self.ent1.pack()
self.ent2 = tk.Entry(self)
self.ent2.pack()
self.b1 = tk.Button(self, text="Track", command=self.tracking)
self.b1.pack()
self.updatevar = tk.IntVar()
self.p = ttk.Progressbar(self, variable=self.updatevar)
self.p.pack()
self.t = threading.Thread(target=self.track)
def tracking(self):
self.t.start()
def track(self):
while True:
if self.ent1.get():
# track here
self.updatevar.set(self.updatevar.get() + 1)
else:
self.updatevar.set(self.updatevar.get() - 1)
if not self.ent2.get():
# track here
self.updatevar.set(self.updatevar.get() + 1)
else:
self.updatevar.set(self.updatevar.get() - 1)
if __name__ == '__main__':
root = progress_track()
root.geometry('400x300')
root.mainloop()
谢谢
解决方案
我修好了...实际上很容易这是供将来参考的代码:
import threading
import time
from tkinter import ttk
import tkinter as tk
class progress_track(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.ent1 = tk.Entry(self)
self.ent1.pack()
self.ent2 = tk.Entry(self)
self.ent2.pack()
self.b1 = tk.Button(self, text="Track", command=self.tracking)
self.b1.pack()
self.updatevar = tk.IntVar()
self.p = ttk.Progressbar(self, variable=self.updatevar)
self.p.pack()
self.t = threading.Thread(target=self.track)
def tracking(self):
self.t.start()
def track(self):
flag1 = False
self.p['maximum'] = 2
flag2 = False
while True:
if self.ent1.get() and not flag1:
self.updatevar.set(self.updatevar.get() + 1)
flag1 = True
elif not self.ent1.get() and flag1:
self.updatevar.set(self.updatevar.get() - 1)
flag1 = False
if self.ent2.get() and not flag2:
self.updatevar.set(self.updatevar.get() + 1)
flag2 = True
elif not self.ent2.get() and flag2:
self.updatevar.set(self.updatevar.get() - 1)
flag2 = False
root.update_idletasks()
time.sleep(0.2)
def on_closing():
root.kill_threads = True
time.sleep(0.1)
root.destroy()
if __name__ == '__main__':
root = progress_track()
root.geometry('400x300')
root.protocol('WM_DELETE_WINDOW', on_closing)
root.mainloop()
推荐阅读
- c++ - 对 C++ 代码中的神经网络梯度下降部分感到困惑
- python - 如何从python将整数参数传递给R脚本
- c++ - 从 C++ 中的基本类型中抛弃 volatile
- c# - 没有 AreaAttribute 的 ASP.Net Core 区域路由和默认路由
- scala - 在 spark scala 中使用地理空间过滤两个纬度/经度之间距离的最快方法
- jsf - 不能将 EL 表达式放在 ui:repeat 内的 id 中
- java - 基于自定义逻辑在java中拆分字符串
- arrays - 使用 Vlookup 提取数据并使用 Arrayformula 检查值
- android - 为什么当 URL 返回未找到时 Android MediaPlayer 卡在 prepare() 中?
- spring-boot - 为什么我们会看到这个 Axon CommandDispatchException 和 Spring Web AsyncRequestTimeoutException?