2017-03-07 12 views
0

何が問題なのかわかりません。ラベルテキストを 'Default label'から 'New label 01'に変更するだけです。 PySide.QtGuiインポート*から がPySideのボタンを押してラベルを変更するには

class myWidget(QWidget): 
    def __init__(self): 
     super(myWidget, self).__init__() 
     layout = QVBoxLayout(self) 

     label1 = QLabel('Default label') 
     layout.addWidget(label1) 

     button = QPushButton('Change') 
     layout.addWidget(button) 
     button.clicked.connect(self.newlabel) 


    def newlabel(self): 
     print 'ACTION1' 
     self.label1.setText('New label 01') 
     print 'ACTION2' 

app = QApplication([]) 
window = myWidget() 
window.show() 
app.exec_() 

これは私がpycharmで実行した後に得たものである

C:\Python27\python.exe D:/OneDrive/Projects/Personal/Tutorials/Python/CGScripting/PySide/simpleWidget.py 
ACTION1 
Traceback (most recent call last): 
    File "D:/OneDrive/Projects/Personal/Tutorials/Python/CGScripting/PySide/simpleWidget.py", line 32, in newlabel 
    self.label1.setText('New label 01') 
AttributeError: 'myWidget' object has no attribute 'label1' 

Process finished with exit code 0 

答えて

0

あなたは__init__方法でselfを付加することでlabel1あなたmyWidgetインスタンスの属性を作成する必要があります。

self.label1 = QLabel('Default label') 
    layout.addWidget(self.label1) 
+0

はい。完璧に動作します。ありがとうございました。 – user1682929

関連する問題