Найти - Пользователи
Полная версия: Создние и отображение Label в экземпляре класса
Начало » GUI » Создние и отображение Label в экземпляре класса
1
babai
Есть класс создания окна. Хочу добавить 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)
Rodegast
Самый правильный ответ на этот вопрос - “никак” ибо так даже я не извращаюсь. Но если очень хочется, то возможно всё:
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_())
babai
Как все просто оказывается , спасибо, завтра попробую
babai
Да, работает) Вы назвали это извращением, а как тогда было бы правильно?) А то я только учусь)
Rodegast
Правильно пользоваться дизайнером, ну или хотя-бы размещать виджеты в конструкторе. А если будешь подцеплять их через seaatr то сам потом концов не найдёшь.
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