'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))