【发布时间】:2019-01-14 17:08:19
【问题描述】:
尝试使用简单(或者我认为是)自动点击器来练习 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 启动器不起作用。
有什么想法吗?
【问题讨论】:
-
专业提示。不要导入
*。您冒着覆盖其他导入并导致代码出现问题的风险。而是以import tkinter as tk之类的形式导入,以防止从库中覆盖方法出现任何问题。 -
好的就行。谢谢
-
是的,我看到了并修复了睡眠
-
我认为您需要使用 Tkinter 的
after()方法来管理您需要使用的任何时间。线程是一种选择,但可能比您需要的更高级。 -
@Mike-SMT 实际上,虽然一般不建议不要使用
import *,但在这种情况下,documentation 中的示例使用它,这就是为什么它如此受欢迎的原因当使用tkinter。
标签: python multithreading tkinter keyboard python-3.6