[英]Progress bar that closes window when complete
我正在嘗試讓進度條窗口顯示一次,一旦按下按鈕,然后在進度條結束(3秒)后關閉,但是似乎直到所有操作完成后窗口才會生成,因此為什么選擇按鈕睡眠3秒,而不是先生成Bar。 我該如何工作? 本規范包含3個獨立的功能,以方便理解問題。 提前致謝 :)
from Tkinter import *
from ttk import Progressbar
from time import sleep
def Generate_Invoice(toplevel):
Generating_Label=Label(toplevel, text="Please wait while we generate your invoice...")
progress = Progressbar(toplevel, maximum=100,mode='determinate')
Generating_Label.pack(side=TOP)
progress.pack(fill=X)
progress.start(10)
def Timer(toplevel):
sleep(3)
toplevel.destroy()
def Work():
toplevel=Toplevel()
Generate_Invoice(toplevel)
Timer(toplevel)
window=Tk()
Generate=Button(window, text="Generate invoice",command=Work)
Generate.pack()
window.mainloop()
更好地面向這樣的復雜代碼。 函數使邏輯上更難以分解。
import ttk
from time import sleep
import Tkinter as tk
class App(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.button = ttk.Button(text="Generate Invoice", command=self.start)
self.button.pack()
self.labelText = tk.StringVar()
self.genLabel = ttk.Label(textvariable=self.labelText)
self.labelText.set(" ")
self.genLabel.pack()
self.progress = ttk.Progressbar(self, orient="horizontal",length=150, mode="determinate")
self.progress.pack()
self.pr = 0
self.prmax = 0
def increase(self):
self.pr += 5
self.progress["value"] = self.pr
if self.pr < self.prmax:
self.after(100, self.increase)
def start(self):
self.progress["value"] = self.pr
self.prmax = 100
self.progress["maximum"] = self.prmax
self.labelText.set("Generating Invoice")
self.increase()
app = App()
app.mainloop()
這是基於我現在找不到:P並按照我認為您想要的方式工作的其他人的程序。 StringVar()用於封裝標簽文本的更改。 免責聲明我不是一個優秀的GUI程序員,所以這可能毫無意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.