如何在使用Tkinter加载应用程序时创建加载屏幕



我有下一个问题。我对这个多线程的东西很陌生。我制作了一个程序,将pdf转换为docx,反之亦然。问题是,我想在转换时放置一个加载屏幕,但我找不到同时执行加载屏幕和方法的方法。我发现我可以使用多线程,但我仍然不能同时执行这两个方法。我有这个:

Thread(target = Conversor()).start()
Thread(target = loading_screen()).start()

Conversor是一个具有__init__的对象,它打开一个tkinter窗口。有了这个代码,加载屏幕,这就是:

def loading_screen():
chars = "/—|" 
for char in chars:
sys.stdout.write('r'+'loading...'+char)
time.sleep(.1)
sys.stdout.flush()

甚至没有出现。即使它真的出现了,它也会在我完成tkinter窗口中的所有内容后出现。首先,我想看看这两个方法是否同时执行,所以我会命令loading_screen方法在程序加载时出现,但它甚至没有出现。

有什么解决方案吗?提前感谢!

您可能正在寻找类似的东西

from tkinter import *
import sys
from threading import Thread
import time
class Conversor(Tk):
def __init__(self):
super().__init__()
self.loaded=False
self.geometry('400x300')
Thread(target=self.loading_screen).start()
label=Label(self)
label.pack()
for i in range(10000): #Increase load time
label['text']+=str(i)
if i%100==0:
label['text']+='n'
def loading_screen(self):
idx=0
while not self.loaded:
chars = r"/—|" 
sys.stdout.write('r'+'loading...'+chars[idx])
sys.stdout.flush()
if idx==len(chars)-1:
idx=0
else:
idx+=1
time.sleep(.1)
else:
sys.stdout.write('nloaded')
def start(self):
self.loaded=True
self.mainloop()
if __name__=='__main__':
conversor=Conversor()
conversor.start()

Tk初始化之后立即调用loading_screen线程,并且标志self.loaded被设置为False。CCD_ 6就在CCD_ 8开始指示GUI已经被加载之前变成CCD_。

相关内容

最新更新