python - 程序响应缓慢,我需要帮助清理它
问题描述
我正在尝试制作一个在屏幕上移动光标的简单程序。
我可以让光标移动,但是当我按“q”时,循环会继续进行。此外,程序将停止响应(退出代码 -805306369 (0xCFFFFFFF)),但如果我等待,它会再次运行。我应该在某处使用对象吗?我需要一些清理和调试方面的帮助。
from tkinter import *
import autopy
import time
import keyboard
from random import randint
root = Tk()
root.title("Mouse Mover")
root.geometry("400x115")
root.resizable(width=False, height=False)
windowWidth = 400
windowHeight = 115
positionRight = int(root.winfo_screenwidth()/2 - windowWidth/2)
positionDown = int(root.winfo_screenheight()/2 - windowHeight/2)
root.geometry("+{}+{}".format(positionRight, positionDown))
def mouse_mover():
while True:
x = randint(0, 1000) # integers for random location point
y = randint(0, 800) # integers for random location point
autopy.mouse.smooth_move(x, y) # moves mouse
time.sleep(1.5)
if keyboard.is_pressed('q'): # supposed to break loop (it actually doesn't??)
break
button_1 = Button(root, text="Start", font=('Helvetica Neue', 16),
command=mouse_mover) # change state to command=*name of function*
button_1.pack()
label_2 = Label(root, text="press 'q' to stop",
background="gray", font=('Helvetica Neue', 16))
label_2.pack()
root.mainloop()
预期:我应该按下 gui 上的按钮,光标应该在屏幕上移动。要停止光标移动,请按键盘上的“q”。
实际:我按下按钮并调用“mouse_mover”函数,光标像应有的那样移动,但在 4 或 5 次移动后停止,程序停止响应或移动一次,然后我必须再次按下按钮。如果我等待它最终会重新启动。当我按“q”时,什么也没有发生,它一直在继续。
编辑:已修复我将功能更改为
def mouse_mover():
while keyboard.is_pressed('q') == False:
x = randint(0, 1000) # integers for random location point
y = randint(0, 800) # integers for random location point
autopy.mouse.smooth_move(x, y) # moves mouse
解决方案
推荐阅读
- dart - 如何实现应用程序屏幕的定期重新渲染
- coldfusion - 是否可以更新 Mura 搜索栏表单中的文本
- linux - How to check environment variable in a linux subshell?
- python - (Python) 使用 numpy.genfromtxt 用数据填充列表(不同的数据类型)
- vue.js - 在 VueJS (vuex) 中按需获取数据
- javascript - 如何在闪亮的某些单元格中创建带有空格的矩阵状复选框组?
- r - 堆叠循环计算大型数据集的选择列的平均值
- javascript - 我们如何在 JavaScript 中找到文件中的不同单词?
- javascript - 如何在反应中正确更新状态
- javascript - shopify 应用程序的存储服务