我是 python 編程的新手,但我使用 Tkinter 制作了一個簡單的 GUI,它有兩個按鈕,開始和退出。當我按下“開始”按鈕時,GUI 凍結,我無法再按下“退出”按鈕......我該如何解決這個問題?
from tkinter import *
from tkinter import ttk
import pyautogui
import keyboard
import time
def running():
while keyboard.is_pressed('q') == False:
if pyautogui.locateOnScreen('image.png', confidence = 0.9) != None:
print("I can see it")
time.sleep(1)
else:
print("I am unable to see it")
time.sleep(1)
def help():
filewin = Toplevel(root, padx=50,pady=50)
information = Label(filewin, text="App made by ..... you can close the app after starting it by pressing the key Q")
information.pack()
root = Tk()
root.title("Rename me later")
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Help", command=help)
filemenu.add_separator()
menubar.add_cascade(label="Info", menu=filemenu)
frm = ttk.Frame(root, padding=30)
frm.pack()
ttk.Label(frm, text="App made by uknown").grid(column=1, row=0)
frm2=ttk.Label(frm, text="").grid(column=0, row=1)
frm2=ttk.Label(frm, text="").grid(column=1, row=1)
frm2=ttk.Label(frm, text="").grid(column=2, row=1)
frm2=ttk.Label(frm, text="").grid(column=0, row=2)
frm2=ttk.Label(frm, text="").grid(column=1, row=2)
frm2=ttk.Label(frm, text="").grid(column=2, row=2)
frm2=ttk.Button(frm, text="Start", command=running).grid(column=0, row=3)
frm2=ttk.Label(frm, text="").grid(column=1, row=3)
frm2=ttk.Button(frm, text="Quit", command=root.destroy).grid(column=2, row=3)
root.config(menu=menubar)
root.mainloop()
uj5u.com熱心網友回復:
您可以嘗試running在自己的執行緒中運行您的函式,這樣它就不會阻塞主執行緒
from threading import Thread
def running():
...
# yadda yadda
def run_thread()
# tell this thread to call the 'running' function
th_runner = Thread(target=running, daemon=True)
th_runner.start() # start the thread
然后修改您的按鈕以呼叫該run_thread()函式
frm2=ttk.Button(frm, text="Start", command=run_thread).grid(column=0, row=3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518305.html
