python-3.x - 尝试更新 PIL.ImageGrab 但它不起作用
问题描述
我正在尝试编写一个需要按下按钮的代码。
一个函数会告诉你要按下哪个按钮。它会检查按钮是否有效(1 到 4),然后会找到导航器控件(来自我试图自动化的应用程序的自定义,我找不到命令它执行特定的选项),检查它的颜色根据内存中的 PIL,如果有效,按下按钮并等待按钮改变颜色以恢复代码。
from pywinauto import application
import pywinauto
import PIL
import time
from array import *
time.clock()
def sanity_check():
if 'app' not in globals():
global app
app = application.Application()
app.connect(title="Contas a pagar")
if 'screen' not in globals():
global screen
screen = PIL.ImageGrab.grab()
if 'colorsarr' not in globals():
global colorsarr
colorsarr = [[(36, 210, 71),(82, 94, 105)],[(198, 62, 62),(84, 96, 107)],[(174, 218, 201),(169, 187, 207)],[(229, 13, 0),(64, 73, 81)]]
def update_screen():
screen = PIL.ImageGrab.grab()
def click_button(number=1):
if 1 <= number <= 4:
number = int(number)
buttonCoord = int((app.Contas_a_pagar.TBDBNavigator2.rectangle().right - app.Contas_a_pagar.TBDBNavigator2.rectangle().left)/4/2), int((app.Contas_a_pagar.TBDBNavigator2.rectangle().bottom - app.Contas_a_pagar.TBDBNavigator2.rectangle().top)/2)
buttonCoord = app.Contas_a_pagar.TBDBNavigator2.rectangle().left + buttonCoord[0]*(number*2-1),buttonCoord[1]+app.Contas_a_pagar.TBDBNavigator2.rectangle().top
if screen.getpixel(buttonCoord) == colorsarr[number-1][0]:
pywinauto.mouse.click(button='left', coords=(buttonCoord))
while screen.getpixel(buttonCoord) != colorsarr[number-1][1]:
update_screen()
continue
return
elif screen.getpixel(buttonCoord) == colorsarr[number-1][1]:
print("Button unavailable")
return
else:
print("Color check button " + str(number))
return
def automate_things():
sanity_check()
print(time.clock())
for i in range(-3,10):
click_button(i)
print(time.clock())
automate_things()
我的问题是我的函数update_screen
应该更改存储在 var 中的screen
内容,但事实并非如此,从而使 while 循环无限。即使我在它抓取像素颜色的位置上放置一个窗口,它也会不断获得另一种颜色。
该colorsarr
数组在 0-index 上具有“可压”颜色,在 1-index 上具有“不可压”颜色
这是我的第一个 python 代码,所以可能我做错了什么。完成后,我将尝试代码审查以获得更好的代码。虽然欢迎提出更好编码的建议,但重点是 screen var 不更新的原因。
解决方案
推荐阅读
- c# - 例外:在 Linq 查询中进行类型转换时,可空对象必须有一个值
- snowflake-cloud-data-platform - 两次上传相同文件后,雪管无法正常工作
- arrays - 多维数组 - 同时获取每个元素的值
- java - 结果集中未包含“indexNullAs”的字段
- python - 不区分大小写,计算子字符串的数量
- php - PHP:将字符串转换为json数组
- xcode - Xcode11 编辑器(通过“将编辑器添加到右侧”)被禁用
- php - 实体关系仅返回带有 Symfony 的 ID
- mysql - 如何使用 mySQL 返回另一列中每个值的最常见列值?
- node.js - 从 github 拉取后,Npm 开发服务器将无法启动