所以我试着制作一个机器人脚本,当某个十六进制颜色出现在某个像素上时,它会执行一些代码来移动鼠标,点击等等,我让它每1秒将一个屏幕截图放到同一个png文件中,并更新png文件的图片。我有六角形颜色的像素线打印到控制台,以便我可以看到它是否更新。它从不更新,只是保持不变。我尝试过用多种方式编写这个脚本,但遗憾的是,我只有一个版本要向您展示,但希望您能够理解我想要完成的任务。我在python2.7兆位。谢谢大家抽出时间!
import autopy
from time import sleep
color_grabber = hex(autopy.bitmap.Bitmap.open("screen1.png").get_color(292,115))
def color_checker():
global color_grabber
color_grabber = color_grabber
return
def mouse_move_click():
autopy.mouse.smooth_move(433,320)
autopy.mouse.click()
def screen_grab():
autopy.bitmap.capture_screen().save("screen1.png")
def the_ifs(mouse_move_click):
if color_checker == "0xffcb05":
mouse_move_click()
while 1==1:
sleep(1)
screen_grab()
color_checker()
the_ifs(mouse_move_click)
print color_grabber发布于 2016-04-13 14:39:53
我相信您的问题是如何使用color_grabber。说color_grabber = color_grabber什么也做不了。代码中所发生的事情是,当您运行它时,在导入之后,将color_grabber的值定义为图像中的颜色。然后执行while循环,并在该循环中调用color_checker。该函数从全局命名空间中引入变量color_grabber,然后将该变量设置为等于自身。首先,您没有重新执行用于定义color_grabber的命令。您只是将颜色值存储回自身,所以很明显,它不会改变。
在如何调用mouse_move_click函数方面也存在问题。您不想传递函数名,因为这并不是真正必要的。但是,您还执行了检查color_checker == "0xffcb05",它将您的函数(函数本身,而不是返回的值)与十六进制代码进行比较。这对你没有任何好处。你想比较一下颜色。解决方案是将颜色传递到the_ifs中,并使用该颜色与十六进制代码进行比较。不过,我应该注意,您不需要将the_ifs变成它自己的函数。只需将该if语句放入while循环即可。不过,我还是把它留给了你。
你想要的是这样的东西。
import autopy
from time import sleep
def color_checker():
color_grabber = hex(autopy.bitmap.Bitmap.open("screen1.png").get_color(292,115))
return color_grabber
def mouse_move_click():
autopy.mouse.smooth_move(433,320)
autopy.mouse.click()
def screen_grab():
autopy.bitmap.capture_screen().save("screen1.png")
def the_ifs(color):
if color == "0xffcb05":
mouse_move_click()
while 1==1:
sleep(1)
screen_grab()
color = color_checker()
the_ifs(color)
print color请注意,我自己还没有运行这段代码,所以我不能保证它能工作,但我相信它应该运行。
发布于 2016-07-15 07:45:20
from autopy.mouse import LEFT_BUTTON
autopy.mouse.click(LEFT_BUTTON)
autopy.mouse.toggle(True, LEFT_BUTTON)
autopy.mouse.toggle(False, LEFT_BUTTON)我在其他人的代码中看到了这样做的必要性,但我不明白为什么我要在Windows7上测试click.In之后使用向上和向下,点击是有效的,但不是很正确,感觉更像向下到我的操作
https://stackoverflow.com/questions/36601540
复制相似问题