[英]Threading with Tkinter to introduce Progress bar
我想为这两个功能中的每一个介绍“不确定的进度条”。 无论如何使用线程或任何其他方法来实现它?
import threading
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import time
def submit_button1():
i=0
for i in range(5):
time.sleep(2)
i+=1
messagebox.showinfo("", "Completed")
def submit_button2():
j=0
for j in range(5):
time.sleep(3)
j+=1
messagebox.showinfo("", "Completed")
root = Tk()
root.geometry("600x300")
root.title("Progress Bar")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
ttk.Button(mainframe, text="submit_button1", command=submit_button1).grid(column=3, row=12, sticky=W)
ttk.Button(mainframe, text="submit_button2", command=submit_button1).grid(column=3, row=15, sticky=W)
root.mainloop()
你的想法已经对了。 只需通过额外的 function 打开一个线程。
import threading
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import time
class pseudo_example():
def __init__(self):
self.root = Tk()
self.root.geometry("600x300")
self.root.title("Progress Bar")
def submit_button1(self):
self.bu1["state"] = "disable"
i = 0
for i in range(101):
time.sleep(.1)
self.progressbar_1["value"] = i
i += 1
messagebox.showinfo("", "Completed")
self.bu1["state"] = "normal"
self.progressbar_1["value"] = 0
def submit_button2(self):
self.bu2["state"] = "disable"
i = 0
for i in range(101):
time.sleep(.1)
self.progressbar_2["value"] = i
i += 1
messagebox.showinfo("", "Completed")
self.bu2["state"] = "normal"
self.progressbar_2["value"] = 0
def thread_sub1(self):
threading.Thread(target=self.submit_button1, daemon=True).start()
def thread_sub2(self):
threading.Thread(target=self.submit_button2, daemon=True).start()
def display(self):
self.bu1 = ttk.Button(self.root, text="submit_button1", command=self.thread_sub1)
self.bu1.grid(column = 0, row = 0)
self.bu2 = ttk.Button(self.root, text="submit_button2", command=self.thread_sub2)
self.bu2.grid(column = 0, row = 1)
style = ttk.Style()
style.configure('text.Horizontal.TProgressbar', text='0 %', anchor='center', troughcolor='white',
background='#009999')
self.progressbar_1 = ttk.Progressbar(self.root, style='text.Horizontal.TProgressbar')
self.progressbar_1.grid(column = 1, row = 0)
self.progressbar_2 = ttk.Progressbar(self.root, style='text.Horizontal.TProgressbar')
self.progressbar_2.grid(column=1, row=1)
self.root.mainloop()
start = pseudo_example()
start.display()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.