我试图重复使用预定义区域,但在使用sikuli.setW()
将其分配给新变量时出现Nonetype错误。这是我的代码:
import math
import sikuli
self.screen_reg = sikuli.Screen(0)
self.monitor_reg = self.screen_reg
self.leftreg = sikuli.Region(
self.monitor_reg.x,
self.monitor_reg.y,
int(math.floor(self.monitor_reg.w/2)),
self.monitor_reg.h)
self.rightreg = sikuli.Region(
self.monitor_reg.x + int(math.floor(self.monitor_reg.w/2)),
self.monitor_reg.y,
int(math.floor(self.monitor_reg.w/2)),
self.monitor_reg.h)
self.leftreg.highlight(3) <=== working
self.quarter = self.leftreg.setW(int(math.floor(self.leftreg.w/2)))
self.quarter.highlight(3) <====== didnt work;
error: NoneType object has no attribute highlight
如果我print type(quarter)
,则返回NoneType
。
如果我把它改成这些:
self.leftreg.highlight(3)
self.leftreg.setW(int(math.floor(self.leftreg.w/2)))
self.leftreg.highlight(3)
工作正常。我错过了什么?谢谢你的帮助。
答案 0 :(得分:0)
&GT;我错过了什么?
对象方法可能没有返回类型。
的摘录 public void setW(int W) {
w = W > 1 ? W : 1;
initScreen(null);
}
setW的返回类型为 void 。也就是说什么都不返回,而你期望它返回一个Region。
正确的做法是:
self.quarter = Region(self.leftreg) # this constructs a new region
self.quarter.setW(int(math.floor(self.leftreg.w/2))) # and this resizes it