Найти - Пользователи
Полная версия: QWidget. Обращение к элементам
Начало » GUI » QWidget. Обращение к элементам
1
basist
Здравствуйте! Подскажите, как изменить значение label при нажатии на кнопку? выдаёт AttributeError: ‘AnyWidget’ object has no attribute ‘label’
from PyQt4 import QtCore, QtGui
class AnyWidget(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.initUI()


def initUI(self):
boxlay = QtGui.QHBoxLayout(self)
frame = QtGui.QFrame(self)
frame.setFrameShape(QtGui.QFrame.StyledPanel)
frame.setFrameShadow(QtGui.QFrame.Raised)

gridlay = QtGui.QGridLayout(frame)

label = QtGui.QLabel("label",frame)
gridlay.addWidget(label,0,0)

hellobutton = QtGui.QPushButton("Hello",None)
gridlay.addWidget(hellobutton,0,1)

self.connect(hellobutton, QtCore.SIGNAL("clicked()"), self._printtext)

boxlay.addWidget(frame)

def _printtext(self):
self.label.setText('was pressed')


if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
aw = AnyWidget()
aw.show()
sys.exit(app.exec_())
проблема ли в QWidget, или в чем-то еще? В какую сторону хотя бы копать…

И еще. может кто-то знает учебник по PyQt? всё что находил - кроме Hello World`а нету практически ничего..
Soteric
Ваш AnyWidget не знает кто такой label потому, что вы не сохраняете ссылку на него. Нужно
self.label = QtGui.QLabel("label",frame)
basist
Soteric, спасибо огромное! весь вечер ломал голову что не так, оказалось так просто…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB