未定义函数中的PyQt4名称

2024-10-02 02:26:30 发布

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

下面的代码显示了一个带有lineedit和按钮的小部件:

import sys
from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, QLineEdit, QLabel, QComboBox, QProgressBar, QFileDialog
from PyQt4.QtCore import QSize, pyqtSlot

class App(QMainWindow):

    def __init__(self):
        super(App, self).__init__()
        self.setGeometry(500, 300, 820, 350)
        self.setWindowTitle("Widget")
        self.initUI()

    def initUI(self):

        #Buttons
        btnposx = 30
        btnposy = 50

        btn4 = QPushButton('Button 4', self)
        btn4.move(btnposx,btnposy+220)
        btn4.clicked.connect(self.le1_get)


        #LineEdits
        leposx = 150
        leposy = btnposy

        le1 = QLineEdit(self)
        le1.move(leposx,leposy)
        le1.resize(630,26)

        self.show()

    @pyqtSlot()
    def le1_get(self):
        le1inp = self.le1.text()
        print(le1inp)



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

Spyder显示le1的名称(在函数中)没有定义。但它是在上面的函数中。你知道吗

enter image description here

输出:

le1inp = self.le1.text()
AttributeError: 'App' object has no attribute 'le1'

Tags: fromimportselfappdefsyspyqt4qapplication
1条回答
网友
1楼 · 发布于 2024-10-02 02:26:30

这只是一个Python错误-与PyQt无关。在这一行中,您尝试查找应用程序类型的实例属性le1

le1inp = self.le1.text()

正如错误消息所说,您还没有创建这样的属性。Python保持了属性和局部变量之间的语法区别。您之前定义了一个具有类似名称的本地实例(现在超出了范围),该名称可能是必需的实例属性。只需将代码更改为:

self.le1 = QLineEdit(self)
self.le1.move(leposx,leposy)
self.le1.resize(630,26)

这应该可以解决这个问题。你可能也想用这个按钮做同样的事情。你知道吗

相关问题 更多 >

    热门问题