AttributeError:'Window'对象没有属性'label1'

时间:2017-03-27 02:50:06

标签: python user-interface pyqt4

我是Python的新手,我已经习惯了java。我在使用其他对象修改PyQt对象属性方面遇到了麻烦。 目前,我试图在测试代码中完成这项工作,但我不知道。 我希望当我点击PushButton时,分配给label1的文本会发生变化。

import sys
from PyQt4 import QtGui, QtCore
from functools import partial

class Window(QtGui.QMainWindow):

def __init__(self):
    super(Window, self).__init__()
    self.setGeometry(50, 50, 500, 300)
    self.setWindowTitle("PyQT tuts!")
    self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))

    extractAction = QtGui.QAction("&GET TO THE CHOPPAH!!!", self)
    extractAction.setShortcut("Ctrl+Q")
    extractAction.setStatusTip('Leave The App')
    extractAction.triggered.connect(self.close_application)

    self.statusBar()

    mainMenu = self.menuBar()
    fileMenu = mainMenu.addMenu('&File')
    fileMenu.addAction(extractAction)


    self.home()

def home(self):
    btn = QtGui.QPushButton("Quit", self)
    btn.clicked.connect(self.close_application)
    btn.resize(btn.minimumSizeHint())
    btn.move(0,100)

    extractAction = QtGui.QAction(QtGui.QIcon('todachoppa.png'), 'Flee the Scene', self)
    extractAction.triggered.connect(self.close_application)

    self.toolBar = self.addToolBar("Extraction")
    self.toolBar.addAction(extractAction)

    checkBox = QtGui.QCheckBox('Enlarge Window', self)
    checkBox.move(100, 25)
    checkBox.stateChanged.connect(self.enlarge_window)

    checkBox1 = QtGui.QCheckBox("CheckTest1", self)
    checkBox1.move(200,50)
    #checkBox1.stateChanged.connect(self.labeltext())

    self.pushButton = QtGui.QPushButton("Click", self)
    self.pushButton.move(250,50)
    self.pushButton.clicked.connect(partial(self.labeltext, "It Worked!"))

    label1 = QtGui.QLabel("Label original", self)
    label1.move(300,100)
    # depending on what you want the default to be.
    #checkBox.toggle()
    self.show()
def labeltext(self, text):  
    self.label1.setText(text)

def enlarge_window(self, state):
    if state == QtCore.Qt.Checked:
        self.setGeometry(50,50, 1000, 600)
    else:
        self.setGeometry(50, 50, 500, 300)



def close_application(self):
    choice = QtGui.QMessageBox.question(self, 'Extract!',
                                        "Get into the chopper?",
                                        QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
    if choice == QtGui.QMessageBox.Yes:
        print("Extracting Naaaaaaoooww!!!!")
        sys.exit()
    else:
        pass
def cambiar_label(self, state):
    if state == QtCore.Qt.Checked:
        self.label1.SetText("label new")
    else:
        self.label1.SetText("label original")






def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())


run()

1 个答案:

答案 0 :(得分:0)

label1 = QtGui.QLabel("Label original", self)
label1.move(300,100)

在实例方法内创建的变量不会自动成为该对象的属性。您需要专门将它们指定为self的属性。如果您希望能够在其他实例方法中访问这些值,这一点尤其重要。

尝试将这些行更改为:

self.label1 = QtGui.QLabel("Label original", self)
self.label1.move(300,100)