Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2011 23:26:03

basist
От:
Зарегистрирован: 2009-09-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

QWidget. Обращение к элементам

Здравствуйте! Подскажите, как изменить значение 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`а нету практически ничего..



Офлайн

#2 Фев. 11, 2011 07:41:17

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

QWidget. Обращение к элементам

Ваш AnyWidget не знает кто такой label потому, что вы не сохраняете ссылку на него. Нужно

self.label = QtGui.QLabel("label",frame)



Офлайн

#3 Фев. 11, 2011 08:51:01

basist
От:
Зарегистрирован: 2009-09-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

QWidget. Обращение к элементам

Soteric, спасибо огромное! весь вечер ломал голову что не так, оказалось так просто…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version