我写了一个简单的Osu!机器人,但它不工作。我没有得到任何错误,直到我打开(全屏)osu。我已经尝试从cmd与管理员运行它,但它只是不工作。我得到这个错误:
Traceback (most recent call last):
File "C:/Users/Kris/PycharmProjects/OsuBot/venv/drums.py", line 7, in <module>
if pyautogui.pixel(609, 440)[0] == 235:
File "C:\Users\Kris\AppData\Local\Programs\Python\Python38\lib\pyscreeze\__init__.py", line 584, in pixel
return (r, g, b)
File "C:\Users\Kris\AppData\Local\Programs\Python\Python38\lib\contextlib.py", line 120, in __exit__
next(self.gen)
File "C:\Users\Kris\AppData\Local\Programs\Python\Python38\lib\pyscreeze\__init__.py", line 113, in __win32_openDC
raise WindowsError("windll.user32.ReleaseDC failed : return 0")
OSError: windll.user32.ReleaseDC failed : return 0
Process finished with exit code 1
我在运行IDLE,cmd和PyCharm时得到错误。
下面是我的代码:
import pyautogui
import keyboard
import time
while 1:
if pyautogui.pixel(609, 440)[0] == 235:
keyboard.press('x')
time.sleep(0.1)
keyboard.release('x')
if pyautogui.pixel(609, 440)[0] == 67:
keyboard.press('z')
time.sleep(0.1)
keyboard.release('z')
time.sleep(0.01)
# X: 609 Y: 440 RGB: ( 32, 99, 222)
# RED = X: 1534 Y: 485 RGB: (235, 69, 44)
# BLUE = X: 1138 Y: 459 RGB: ( 67, 142, 172)
先谢了。
1条答案
按热度按时间z9smfwbn1#
看起来
pyautogui
在像素识别方面有一些问题,因为我也尝试了pyautogui.pixel()
,我似乎得到了相同的OSError: windll.user32.ReleaseDC failed : return 0
,但是由于某种原因,它工作了一半的时间,我得到了正常运行的代码。虽然不知道为什么,我没有做任何事情,除了重新运行程序连续几次,直到它的工作。您可以使用
pip install pillow
来尝试pillow
库,它具有getpixel()
函数。你必须先截图,但幸运的是pyautogui
已经覆盖了:我看到你也在使用
keyboard
库,但老实说,你可以只使用pyautogui
,然后你就不需要导入额外的库。最终代码