首页 > 解决方案 > 程序响应缓慢,我需要帮助清理它

问题描述

我正在尝试制作一个在屏幕上移动光标的简单程序。

我可以让光标移动,但是当我按“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

标签: pythontkinter

解决方案


推荐阅读