При нажатии кнопки закрытия окно замораживается на несколько секунд. В процессе я использую многопоточность для вызова главной функции (селен).
Кроме того, я использовал window.update () , но результат тот же
Каксделать окно гладким при нажатии кнопки?
from tkinter import *
import threading
import time
from selenium import webdriver
gdriver=None
class Task(threading.Thread):
def __init__(self,name,namefunc):
threading.Thread.__init__(self,target=namefunc,name=name,daemon=True)
threads=list(filter(lambda x: type(x) is Task,threading.enumerate()))
if len(threads) == 0:
self.start()
print("{} Running...".format(self.getName()))
else:
print("Wait...")
label.configure(text="Thread exist!")
def processStart():
global gdriver
label.configure(text="Process ON")
driver=webdriver.Chrome()
gdriver=driver
driver.get("https://www.google.com")
time.sleep(5)
driver.quit()
print("Done...")
def close_app():
threads=[x for x in list(filter(lambda x : x.is_alive() and type(x) is Task,threading.enumerate()))]
print("Threads: {}".format(threads))
if len(threads) > 0:
while True:
if gdriver:
print("Close browser....")
gdriver.quit()
break
else:
if gdriver:
gdriver.quit()
print("Close window...")
window.destroy()
sys.exit()
if __name__=='__main__':
window=Tk()
window.title("App Sample")
window.geometry("300x200")
label =Label(window, text="Process OFF")
label.pack(fill = X)
button=Button(window,text="Start", command=lambda : Task("Thread 1", processStart))
buttonQuit=Button(window, text="Close", command=close_app)
button.pack(fill=X)
buttonQuit.pack(fill=X)
window.mainloop()