'PySide6.QtWidgets.QLineEdit' 对象不可迭代
'PySide6.QtWidgets.QLineEdit' object is not iterable
最近,我在 python 开始编程,现在我正在为密码和伪随机数生成器编写 GUI。我有这个问题:
类型错误:'PySide6.QtWidgets.QLineEdit' 对象不可迭代
btn_2 = QPushButton("Generate password", self)
btn_2.resize(100,30)
btn_2.move(340, 250)
btn_2.resize(100, 30)
btn_2.clicked.connect(self.btn1)
btn_3 = QPushButton("Generate pseudorandom numbers", self)
btn_3.move(140, 250)
btn_3.resize(180, 30)
btn_3.clicked.connect(self.btn2)
self.line = QLineEdit(self)
self.line.setPlaceholderText("Enter the expected string length")
self.line.resize(250, 20)
self.line.move(200, 220)
self.onlyInt = QIntValidator()
self.line.setValidator(self.onlyInt)
self.show()
def btn1(self):
mark = self.line
chars = string.ascii_letters + string.digits
print("".join(random.choice(chars) for _ in mark))
def btn2(self):
mark = self.line
chars = string.digits
print("".join(random.choice(chars) for _ in mark))
使用 self.line.text
而不是 self.line
。
所以:
mark = int(self.line.text)
chars = string.ascii_letters + string.digits
print("".join(random.choice(chars) for _ in range(mark))
请注意,我还用 range(mark)
替换了 mark
,这可能是您在这里想要的。
一般情况下,如果出现 XYZ 不可迭代错误,请查看 XYZ 的文档,了解如何获取它存储的任何内容以及您想要迭代的内容。在这种情况下,我们看到我们可以 get at the text,这大概是您想要的 .text
。但碰巧我认为你想迭代 self.line.text
次 (因此你要检查一个 int),所以我们转换为 int 然后迭代 range(int(self.line.text))
。
最近,我在 python 开始编程,现在我正在为密码和伪随机数生成器编写 GUI。我有这个问题: 类型错误:'PySide6.QtWidgets.QLineEdit' 对象不可迭代
btn_2 = QPushButton("Generate password", self)
btn_2.resize(100,30)
btn_2.move(340, 250)
btn_2.resize(100, 30)
btn_2.clicked.connect(self.btn1)
btn_3 = QPushButton("Generate pseudorandom numbers", self)
btn_3.move(140, 250)
btn_3.resize(180, 30)
btn_3.clicked.connect(self.btn2)
self.line = QLineEdit(self)
self.line.setPlaceholderText("Enter the expected string length")
self.line.resize(250, 20)
self.line.move(200, 220)
self.onlyInt = QIntValidator()
self.line.setValidator(self.onlyInt)
self.show()
def btn1(self):
mark = self.line
chars = string.ascii_letters + string.digits
print("".join(random.choice(chars) for _ in mark))
def btn2(self):
mark = self.line
chars = string.digits
print("".join(random.choice(chars) for _ in mark))
使用 self.line.text
而不是 self.line
。
所以:
mark = int(self.line.text)
chars = string.ascii_letters + string.digits
print("".join(random.choice(chars) for _ in range(mark))
请注意,我还用 range(mark)
替换了 mark
,这可能是您在这里想要的。
一般情况下,如果出现 XYZ 不可迭代错误,请查看 XYZ 的文档,了解如何获取它存储的任何内容以及您想要迭代的内容。在这种情况下,我们看到我们可以 get at the text,这大概是您想要的 .text
。但碰巧我认为你想迭代 self.line.text
次 (因此你要检查一个 int),所以我们转换为 int 然后迭代 range(int(self.line.text))
。