为什么是第一个检查系统文件的人,而不是进度条

时间:2018-12-29 03:49:34

标签: python tkinter

问题

运行程序时,我触发了sfc / scannow,并且进度条没有出现,但是只有程序冻结,直到sfc scannow完成其工作。

图片-https://imgur.com/a/tVG8Qoz

我试图更改他们的位置,但是不起作用

函数sfcScannow

def sfcScannow(事件):

sfcWindow = Toplevel()
sfcWindow.title("Сканирование системы")
sfcWindow.minsize(350,480)
sfcWindow.maxsize(350,480)
sfcWindow['bg'] = '#fff2fe'

pb = ttk.Progressbar(sfcWindow, length=300, mode ="indeterminate")
msg = Label(sfcWindow, width=30, height=4, fg="#691962", relief="ridge", font="Intro 15", text="Начато сканирование")
msg2 = Label(sfcWindow, width=30, height=3, fg="#691962", relief="ridge", font="Intro 13", text="About UsefulTech.")
msg3 = Button(sfcWindow, width=30, height=3, fg="#691962", relief="ridge", font="Intro 16", text="Информация")

def InformSFC(event):
    mb.askyesno(title="Информация", message="Данная функция отвечает за проверку системных файлов, используя функцию Windows 'sfc /scannow'. Процесс может занимать более 20 минут и шкала процесса, не точно расчитана. Лучше ждать > 30 минут")

msg3.bind("<Button-1>", InformSFC)

msg.pack()
msg2.pack()
msg3.pack()
pb.pack(side="bottom")
pb.start()
os.system("sfc /scannow")

在测试过程中,进度条应该正常工作,并且在测试完成后,它应该停止

1 个答案:

答案 0 :(得分:0)

答案

def sfcscannow():
        os.system("sfc /scannow")
    def prb():
        pb.pack(side="bottom")
        pb.start()  
    def StartScan(event):
        mb.askyesno(title="Информация", message="Проверка начата")
        t1 = threading.Thread(target=prb)
        t2 = threading.Thread(target=sfcscannow)
        t1.start()
        t2.start()