Ткинтер заморозка с питоном Selenium - PullRequest
2 голосов
/ 23 октября 2019

При нажатии кнопки закрытия окно замораживается на несколько секунд. В процессе я использую многопоточность для вызова главной функции (селен).

Кроме того, я использовал 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...