我正在尝试制作一个简单的PyQT4应用程序,该应用程序可以让我在单个消息框中显示来自两个文本框的文本。这很简单,所以我确定我缺少一些很小的东西。

谢谢你的帮助。

import sys
from PyQt4 import QtGui, QtCore

class myWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        #The setGeometry method is used to position the control.
        #Order: X, Y position - Width, Height of control.
        self.resize(500,350)
        self.center()
        self.setWindowTitle("Sergio's QT Application.")
        self.setWindowIcon(QtGui.QIcon('menuScreenFolderShadow.png'))

        self.setToolTip('<i>Welcome</i> to the <b>first</b> app ever!')
        QtGui.QToolTip.setFont(QtGui.QFont('Helvetica', 12))

        txtFirstName = QtGui.QLineEdit('', self)
        txtFirstName.setGeometry(35, 35, 150, 20)

        txtLastName = QtGui.QLineEdit('', self)
        txtLastName.setGeometry(35, 60, 150, 20)

        btnSubmit = QtGui.QPushButton('Say hello.', self)
        btnSubmit.setGeometry(340, 250, 150, 35)
        self.connect(btnSubmit, QtCore.SIGNAL("clicked()"), self.clicked)

        btnQuit = QtGui.QPushButton('Exit Application', self)
        btnQuit.setGeometry(340, 300, 150, 35)

        self.connect(btnQuit, QtCore.SIGNAL('clicked()'),
                    QtGui.qApp, QtCore.SLOT('quit()'))

    def clicked(self):
        QtGui.QMessageBox.about(self, "Just dropped by to say hi!", "Welcome to this tutorial %s %s!" % (
            self.txtFirstName.text(), self.txtLastName.text()))

    def center(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size =  self.geometry()
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)

app = QtGui.QApplication(sys.argv)
mainForm = myWindow()
mainForm.show()
sys.exit(app.exec_())


这是我收到的错误消息:


  追溯(最近一次通话):
  文件
  “ C:\ Users \ Sergio.Tapia \ Documents \ NetBeansProjects \ PyQTTests \ src \ pyqttests.py”,
  第36行,点击了
      self.txtFirstName.text(),self.txtLastName.text()))
  AttributeError:“ myWindow”对象具有
  没有属性“ txtFirstName”

最佳答案

问题出在__init__,其中创建了txtLastName。它不是作为类成员创建的,而是作为__init__方法内部的局部变量创建的。要使其成为类成员,您可以稍后使用self.进行引用:

    self.txtFirstName = QtGui.QLineEdit('', self)
    self.txtFirstName.setGeometry(35, 35, 150, 20)

    self.txtLastName = QtGui.QLineEdit('', self)
    self.txtLastName.setGeometry(35, 60, 150, 20)

关于python - AttributeError:“myWindow”对象没有属性“txtFirstName”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4155559/

10-12 21:11