线程和Tkinter不能一起工作

时间:2018-08-07 14:48:56

标签: python multithreading tkinter keyboard python-3.6

尝试使用简单的自动答题器练习Tkinter,Pyautogui和线程。

  • 应该打开一个菜单(选中),
  • 然后选择按钮(选中),
  • 它打开另一个窗口(选中),
  • ,当您按下 F7 时,它将开始单击(不起作用)

这在没有Tkinter的情况下也很好

这是代码:

from tkinter import *
from pyautogui import *
from time import  *
from threading import Thread as th
import keyboard 

root = Tk()
key_loop = 1
k = ""
root.geometry("150x500")
def detect_key_def():
    global k
    while key_loop == 1:
        if keyboard.is_pressed('f7'):
            k = "f7"
        elif keyboard.is_pressed("f8"):
            k = "f8"
        elif keyboard.is_pressed("f9"):
            k = "f9"

detect_key = th(target=detect_key_def)
detect_key.start()
def clicker():
    clicker = Tk()
    root.geometry("300x300")

Label(clicker, text="Start - F7\n\nStop - F8").pack()
Button(clicker, text="Exit", command =clicker.destroy).pack()
if k == "f7":
    click()
    t.sleep(0.01)
elif k == "f8":
    t.sleep(0.01)
clicker.mainloop()

Button(root, text="Auto Clicker", command=clicker).pack()
root.mainloop()

当我运行代码时, F7 入门程序不起作用。
有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,因此根据您要对代码进行的处理,最好在此处使用body { margin: 0; } video { position: relative; width: 100%; height: auto; } 而不是线程。 Tkinter始终监视所有按键,因此您只需将after()按钮绑定到“顶层”窗口即可。

以下代码会将F7绑定到单击程序顶层窗口。单击顶层以使其聚焦时,可以使用F7开始自动单击。我将其设置为每秒1次点击。

F7