【pywinauto】多个TextBox遍历输入

鸽了好久,出了好几趟差,ok,又打回原形了,前几天摸代码连转义都想了半天(最后突然想起Py根本不用定义类型),

我真的佛了。

开了个新坑Pywinauto,主要是App[][].这个看着比较顺眼(主要是pywinauto有在更新),

所以就选pywinauto来练练手吧。


前面的诸如什么怎么找控件名字怎么找句柄怎么连接绑定这些就略过了,

用vs画了一堆输入框的窗口;

输入框名是edit1~22,所以循环里面应该是这样的:

for i in range(1, 23):
    # text_box_list['list_'+str(i)] = dlg_test.edit % i
    # text_box_list['list_' + str(i)].set_text("test"+str(i))

    # check_edit = eval("edit" + i)
    # dlg_test.check_edit.set_text("test" + str(i))

    # dlg_test.text_box_list['edit%s' % i].set_text("test"+str(i))

说笑的,上面的都没能起作用,那单次调用来说:

dlg_test.edit1.set_text("test"+str(i))

这当中edit1是什么类型呢,我没太搞清楚,总之用动态变量的方法是没能解决问题的;

所以最后还是靠了eval来解决问题:

def text_execute(text_box_num):
    return eval("dlg_test.edit"+str(text_box_num)+".set_text(\"test\""+"+str("+str(text_box_num)+"))")

for i in range(1, 23):
    text_execute(i)
    time.sleep(0.01)

这里为什么要str(str())这样呢

是因为从调用的时候来说输入的是一个int类型,但是eval里面要str

如果直接将int网上传的话(实质上是无定义的):

def text_execute(text_box_num):
    # return eval("dlg_test.edit"+str(text_box_num)+".set_text(\"test\""+"+str("+str(text_box_num)+"))")
    return eval("dlg_test.edit"+str(text_box_num)+".set_text(\"test\""+"+"+str(text_box_num)+")")

就会报错:

    return eval("dlg_test.edit"+str(text_box_num)+".set_text(\"test\""+"+"+str(text_box_num)+")")
  File "<string>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

所以就将计就计, str(str())咯,

所以说Py这个定义数据,爽起来是爽,憨起来也憨

实际效果如上,非常爽;

如果要清空的话直接set_text("")就ok了

def text_execute(text_box_num):
    return eval("dlg_test.edit"+str(text_box_num)+".set_text(\"test\""+"+str("+str(text_box_num)+"))")


def text_execute_clear(text_box_num):
    return eval("dlg_test.edit"+str(text_box_num)+".set_text(\"\")")


# text_box_list = locals()
for i in range(1, 23):
    text_execute(i)
    time.sleep(0.01)
    text_execute_clear(i)
    time.sleep(0.01)

(实际上一般情况下哪里有那么多不命名的text_box,我就是要看着爽才这样整的)

最近沉迷日麻,一个不留神,就年末了(中间学了啥都没写下来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值