Python Tkinter报错:IntVar与int实例不支持<比较运算
报错产生原因
x是Tkinter提供的IntVar类型对象,属于Tk内部封装的变量容器,不是Python原生的整数类型。Python原生的数值比较、算术运算都不支持直接在IntVar实例和普通int值之间执行,因此写while x < 212时会触发类型不匹配的报错。
除此之外,代码里后续的x += 1也是错误写法,IntVar对象本身不支持直接做加法自增操作,就算修复了比较行的问题,运行到自增行同样会报错。
修复方案
操作IntVar存储的实际值必须遵循Tkinter的规则:
- 读取
IntVar里存的数值,调用.get()方法,返回值就是普通Python整数,可以正常做比较、运算 - 修改
IntVar里存的数值,调用.set(新值)方法,绑定的Entry输入框会自动同步显示更新后的值
不需要直接拿IntVar对象参与循环逻辑,只需要在函数启动时取出初始值,用普通整型变量做循环计数即可,如果需要同步更新输入框的显示内容,再把最新计数值写回IntVar就行。
修复后的核心函数代码如下:
def Typing(): time.sleep(5) global x # 读取输入框绑定的IntVar中存储的起始值,转为普通整型 count = x.get() while count < 212 and not keyboard.is_pressed("q"): pyautogui.moveTo(Search) click() input_content = f"smalltribes{count} " pyautogui.write(input_content) time.sleep(1) count += 1 # 若需要让输入框同步显示当前计数,取消下一行注释即可 # x.set(count)
注:原代码中多余的
str(s)、str(x)这类转换可以简化,字符串拼接时非字符串值会自动转字符串,不需要手动重复转换。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

