python - 程序延迟循环 - tkinter
问题描述
我正在尝试使用 Python 和 Tkinter 编写 clickbot。程序启动,显示一个窗口,您可以在其中输入显示坐标并提交数字。程序应该每 5 分钟点击一次这些坐标。
提交数字并单击正确的位置即可。但不是真的每5分钟循环一次。我没有更多的想法了。我知道,我可以使用time.sleep()
,但是整个程序都休眠了。
import time
import tkinter as tk
import time
from pynput.mouse import Button, Controller
def getTextInput():
global ValueX
global ValueY
resultX = e1.get()
ValueX = resultX
X = float(ValueX)
resultY = e2.get()
ValueY = resultY
Y = float(ValueY)
print('Eingabe X: ', X)
print('Eingabe Y: ', Y)
KlickMouse(X, Y)
def KlickMouse(X, Y):
print('Old Mouse Pos:{0}'.format(mouse.position))
mouse.position = (X, Y)
time.sleep(0.2)
# mouse.click(Button.left, 1)
# time.sleep(0.2)
# mouse.click(Button.left, 1)
print('New Mouse Pos:{0}'.format(mouse.position))
mouse = Controller()
master = tk.Tk()
tk.Label(master, text="X-Koordinate").grid(row=0)
tk.Label(master, text="Y-Koordinate").grid(row=1)
tk.Button(master, text="Submit", command=getTextInput).grid(row=2)
tk.Button(master, text="Beenden", command=master.destroy).grid(row=3)
e1 = tk.Entry(master)
e2 = tk.Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
master.mainloop()
解决方案
您可以使用 Tkinter 的after
方法来执行此操作。
def KlickMouse(X, Y):
print('Old Mouse Pos:{0}'.format(mouse.position))
mouse.position = (X, Y)
print('New Mouse Pos:{0}'.format(mouse.position))
master.after(5*60*1000, timedClick)
def timedClick():
mouse.click(Button.left, 1)
master.after(5*60*1000, timedClick)
现在坐标设置好后,程序等待 5 分钟(延迟以毫秒为单位,所以 5 分钟为5*60*1000
)并运行timedClick
。这会单击鼠标,然后再等待 5 分钟,然后再次调用自身。
推荐阅读
- android - Android Studio 4.1版本看不到flutter、dart插件
- mapbox - 如何通过额外 json 文件中的数据更改特征的样式/属性?(地图盒 GL)
- android - Android中带有通知的AlarmManager不显示任何通知
- c# - .NETStandard 多目标库包在 Netstandard 2.0 项目中出现 CS0234 错误
- python - 如何在文档字符串的表格中设置代码块对齐方式?
- svelte - 将数据传递给组件时使用扩展属性与整个对象
- android - 如何使用 kotlin 从 firebase 实时数据库中检索数据
- c++ - c++编译错误使用set [二进制表达式的无效操作数('const Room'和'const Room')]
- php - 无法在 PHP 中访问 OpenSSL eNULL 密码
- laravel - 未能按升序在赛普拉斯上以秒为单位比较日期