Python 我认为它可以';不要移动鼠标光标
当我以脚本的形式运行它时,它不能移动光标Python 我认为它可以';不要移动鼠标光标,python,uinput,Python,Uinput,当我以脚本的形式运行它时,它不能移动光标 python main.py 但是,当我使用Python interactive一步一步地运行时,效果很好 import uinput import Tkinter as tk root = tk.Tk() screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() root.destroy() device = uinput.Device([
python main.py
但是,当我使用Python interactive一步一步地运行时,效果很好
import uinput
import Tkinter as tk
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.destroy()
device = uinput.Device([
uinput.BTN_LEFT,
uinput.BTN_RIGHT,
uinput.REL_X,
uinput.REL_Y,
])
def main():
device.emit(uinput.REL_X, -1 * screen_width)
device.emit(uinput.REL_Y, -1 * screen_height)
if __name__ == '__main__':
main()
这是一个不移动光标的命令
spksoft@spksoft ~/code/python/Sample HI $ python main.py
Traceback (most recent call last):
File "main.py", line 13, in <module>
uinput.REL_Y,
File "/usr/local/lib/python2.7/dist-packages/uinput/__init__.py", line 161, in __init__
self.__uinput_fd = _libsuinput.suinput_open()
File "/usr/local/lib/python2.7/dist-packages/uinput/__init__.py", line 64, in _error_handler
raise OSError(code, os.strerror(code))
OSError: [Errno 13] Permission denied
spksoft@spksoft ~/code/python/Sample HI $ sudo python main.py
spksoft@spksoft ~/code/python/Sample HI $
测试视频:至少在X11下,因为您的测试代码完成得太突然,所以在代码退出之前,没有时间创建设备的处理程序。
当代码退出时,仅针对这些测试用例的解决方案是添加
time.sleep()
命令。在现场运行条件下,不需要这样做
import uinput
import Tkinter as tk
import time
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.destroy()
device = uinput.Device([
uinput.BTN_LEFT,
uinput.BTN_RIGHT,
uinput.REL_X,
uinput.REL_Y,
])
def main():
time.sleep(1)
device.emit(uinput.REL_X, -1 * screen_width)
device.emit(uinput.REL_Y, -1 * screen_height)
if __name__ == '__main__':
main()
您是否确认已正确计算了
screen\u width
和screen\u height
?可能是您的计算导致光标移动零像素。是的,我想将光标移动到零位置(0,0)。当我复制并粘贴到python interactive上时,代码可以正常工作,但当我使用这个命令“python main.py”以脚本形式运行它时,它不会显示任何错误,但不会移动光标。这并不能回答我的问题。您是否验证了-1*screen\u width
是否返回了您认为返回的内容?对不起,我的回答是,我已经验证了。屏幕宽度和屏幕高度包含我的分辨率,我将它们相乘,因为我想将光标移动到零位置。我已经将“-1*屏幕宽度”和“-1*屏幕高度”更改为常量,例如1、2、3。。。但它不会移动光标。有关更多信息,我录制了一段测试视频
import uinput
import Tkinter as tk
import time
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.destroy()
device = uinput.Device([
uinput.BTN_LEFT,
uinput.BTN_RIGHT,
uinput.REL_X,
uinput.REL_Y,
])
def main():
time.sleep(1)
device.emit(uinput.REL_X, -1 * screen_width)
device.emit(uinput.REL_Y, -1 * screen_height)
if __name__ == '__main__':
main()