我是TkInter的新手。我有这个程序,在单击一个按钮后,它从另一个模块(anotherModule)调用一个函数(processTask),该模块需要几分钟才能运行。
问题是单击按钮后,几秒钟后会弹出4个主程序窗口。我真的不明白为什么会这样。
我的代码中是否有某些东西可以让程序表现得那样?
提前致谢
from Tkinter import *
import tkMessageBox
from anotherModule import *
import ttk
from PIL import ImageTk, Image
import threading
app = Tk()
app.title("Title")
app.geometry('450x300+200+200')
img = ImageTk.PhotoImage(Image.open("logo.png"))
panel = Label(app, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
message = ''
def handle_click():
Instruction.config(text='Rquest is being processed')
pb.start()
def callback():
processTask()
pb.stop()
pb.config(value=100)
Instruction.config(text='Fin')
t = threading.Thread(target=callback)
t.start()
B = Button(app, command = handle_click)
img2 = ImageTk.PhotoImage(Image.open("GenHor.PNG"))
B.config(image = img2)
B.pack()
Instruction = Label(app, text=message, font='size, 14')
Instruction.pack()
pb = ttk.Progressbar(app,orient='horizontal',length=300,mode='determinate')
pb.pack()
app.mainloop()
修改
我知道这不是最好的解决方案但是,有没有办法计算执行次数并执行类似的操作:
if counter == 1:
app.mainloop()
那么,只有在第一次执行时才会运行mainloop?