Форум сайта python.su
Есть класс создания окна. Хочу добавить Label в экземпляр класса, делаю это с помощью setattr, а как сделать чтобы чтобы этот созданный атрибут отобразился в этом окне? У меня отображение компонентов в этом классе сделано с помощью QGridLayout.
his_win = history.HistoryWin(window1) setattr(his_win, "label3", QtGui.QLabel("Проверка", self)) print(getattr(his_win, "label3"))
class HistoryWin(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.setWindowTitle("Поиск и редактирование") self.resize(620, 440) self.label = QtGui.QLabel(self) stroka = "Дата и время изменения\tВерсия ОС и ПО\tОрганизация и место установки\tСтоимость\tСтатус" self.label.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignCenter) self.label1 = QtGui.QLabel("'%s'" % stroka.center(20), self) self.label2 = QtGui.QLabel(self) self.label2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) grid = QtGui.QGridLayout() grid.addWidget(self.label, 0, 0, 1, 1) grid.addWidget(self.label1, 1, 0, 1, 1) grid.addWidget(self.label2, 2, 0, 50, 1) self.setLayout(grid)
Офлайн
Самый правильный ответ на этот вопрос - “никак” ибо так даже я не извращаюсь. Но если очень хочется, то возможно всё:
import sys from PySide import QtGui from PySide import QtCore class HistoryWin(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.setWindowTitle(u"Поиск и редактирование") self.resize(620, 440) self.label = QtGui.QLabel(self) stroka = u"Дата и время изменения\tВерсия ОС и ПО\tОрганизация и место установки\tСтоимость\tСтатус" self.label.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignCenter) self.label1 = QtGui.QLabel("'%s'" % stroka.center(20), self) self.label2 = QtGui.QLabel(self) self.label2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.grid = QtGui.QGridLayout() self.grid.addWidget(self.label, 0, 0, 1, 1) self.grid.addWidget(self.label1, 1, 0, 1, 1) self.grid.addWidget(self.label2, 2, 0, 50, 1) self.setLayout(self.grid) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) win = HistoryWin() label = QtGui.QLabel(u"Проверка", win) setattr(win, "label3", label) win.grid.addWidget(win.label3, 0, 0, 1, 1) win.show() sys.exit(app.exec_())
Офлайн
Как все просто оказывается , спасибо, завтра попробую
Офлайн
Да, работает) Вы назвали это извращением, а как тогда было бы правильно?) А то я только учусь)
Офлайн
Правильно пользоваться дизайнером, ну или хотя-бы размещать виджеты в конструкторе. А если будешь подцеплять их через seaatr то сам потом концов не найдёшь.
Отредактировано Rodegast (Март 29, 2016 11:02:51)
Офлайн