Python 如何编辑标签';在创建它们之后,文本是什么?
我想在创建标签后编辑它的文本,但它给了我一个错误。我到底做错了什么Python 如何编辑标签';在创建它们之后,文本是什么?,python,python-3.x,pyqt4,Python,Python 3.x,Pyqt4,我想在创建标签后编辑它的文本,但它给了我一个错误。我到底做错了什么 def __init__(self): super(Window, self).__init__() self.setGeometry(50, 50, 500, 300) self.setWindowTitle("PyQt test!") QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("pla
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQt test!")
QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("plastique"))
self.home()
def home(self):
btn = QtGui.QPushButton("New game", self)
btn.clicked.connect(self.change)
btn.resize(300,25)
btn.move(100, 175)
txt = "Welcome to the main menu! (WIP obviously)"
lbl = QtGui.QLabel(txt, self)
lbl.resize(400, 100)
lbl.move(50, 25)
lbl.setAlignment(QtCore.Qt.AlignCenter)
self.show()
def change(self, txt):
txt = "test"
self.lbl.setText(txt)
回溯(最近一次呼叫最后一次):
文件“C:\Users\Home\Desktop\开始(PyQt).py”,第47行,更改为
self.lbl.setText(txt)AttributeError:“窗口”对象没有属性“lbl”
您没有将
lbl
声明为属性。因此,一旦代码离开home()
方法,它就超出了范围,并且无法获得对对象的引用
将self.lbl=lbl
附加到home()
方法中,如下所示:
lbl = QtGui.QLabel(txt, self)
lbl.resize(400, 100)
lbl.move(50, 25)
lbl.setAlignment(QtCore.Qt.AlignCenter)
self.lbl = lbl
出于好奇,您是否先调用了
home()
并创建了lbl
?编辑了问题。。。我真的不知道问题是从哪里来的。当我在这里提问时,我通常会发布太多不必要的代码或太少的代码。作为一个新手并不有趣……对每个操作只使用self.lbl
不是更有意义吗?而不是使用lbl
然后再使用self.lbl
?我个人认为它没有那么干净。短变量名还不错,但我不喜欢常量属性访问。