PySide6开发密码与伪随机数生成器GUI时触发QLineEdit不可迭代报错
报错原因
TypeError: 'PySide6.QtWidgets.QLineEdit' object is not iterable报错的核心逻辑错误是:你在btn1、btn2函数中错误地将QLineEdit控件对象self.line直接作为循环迭代对象使用。你实际需要的是获取输入框内用户填写的长度数值,而非直接使用输入框控件本身参与循环。
修复方案
修改btn1和btn2函数的逻辑:
- 通过
self.line.text()获取输入框的文本内容,转换为整数类型作为生成随机内容的长度 - 用
range()方法生成对应长度的迭代器,替换原来直接用输入框对象迭代的写法 - 可补充空输入判断,避免用户未填长度就点击按钮触发额外报错
修正后的核心代码
def btn1(self): # 获取输入框的数值作为长度 length_text = self.line.text().strip() if not length_text: return # 空输入直接返回,可根据需求自行添加弹窗提示 mark = int(length_text) chars = string.ascii_letters + string.digits print("".join(random.choice(chars) for _ in range(mark))) def btn2(self): length_text = self.line.text().strip() if not length_text: return mark = int(length_text) chars = string.digits print("".join(random.choice(chars) for _ in range(mark)))
内容的提问来源于stack exchange,提问作者yoghurtcode7
相关产品推荐
相关产品推荐

