在QLineEdit widg上调用.text()时PYQT5崩溃

2024-10-01 07:36:04 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在下面的代码行中输入代码时,我相信它会崩溃。我需要给这里输入的内容分配一个变量。在

import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets

class loginScreen(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        usernameBox = QtWidgets.QLineEdit()
        usernameBox.textChanged.connect(self.myfunc)

        vArrangement = QtWidgets.QVBoxLayout()
        vArrangement.addWidget(usernameBox)
        self.setLayout(vArrangement)

        self.show()

    def myfunc(self):
        x = usernameBox.text()
        print(x)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = loginScreen()
    sys.exit(app.exec_())

Tags: 代码fromimportselfappinitdefsys
1条回答
网友
1楼 · 发布于 2024-10-01 07:36:04

如果您观察到usernameBox它是作为局部变量创建的,因此类的其他方法无法访问它,在您的例子中有两种解决方案:

  • 生成类的usernameBox属性。在

class loginScreen(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.usernameBox = QtWidgets.QLineEdit()
        self.usernameBox.textChanged.connect(self.myfunc)

        vArrangement = QtWidgets.QVBoxLayout()
        vArrangement.addWidget(self.usernameBox)
        self.setLayout(vArrangement)

        self.show()

    def myfunc(self):
        x = self.usernameBox.text()
        print(x)
  • 或者使用sender()来获得发出信号的对象,在您的例子中是QLineEdit。在

^{pr2}$

相关问题 更多 >