Избегая повторяющегося макета. Addwidget () вызовы в pyside6Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Избегая повторяющегося макета. Addwidget () вызовы в pyside6

Сообщение Anonymous »

После работы с введением в Pyside6 я начал разработать простой графический интерфейс для приложения. Одна вещь, которую я заметил,-это требование, чтобы добавить компонент, например, Qlabel, а затем определить, где должна лежать макет.

Код: Выделить всё

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

# Many declarations of attributes
self.line_name = QLabel("Name")
self.input_name = QInput("Example Name")
self.line_email = QLabel("Email")
self.input_email = QInput("[email protected]")
self.radio1 = QRadioButton("Option 1")
self.radio2 = QRadioButton("Option 2")
self.radio3 = QRadioButton("Option 3")
...

# Many calls to "add Layout" for each attribute
self.layout.addWidget(self.line_name)
self.layout.addWidget(self.input_name)
self.layout.addWidget(self.line_email)
self.layout.addWidget(self.input_email)
self.layout.addWidget(self.radio1)
self.layout.addWidget(self.radio2
self.layout.addWidget(self.radio3
...
Я обнаружил, что могу создать вспомогательный метод и использовать Setattr , чтобы вместо этого установить каждый атрибут, с дополнительным вызовом, чтобы добавить виджет в макет. Это упрощает? это туда, где мне нужно только вызвать метод, чтобы добавить виджет и установить макет.class MainWindow(QMainWindow):
def add(self, name, widget):
setattr(self, name, widget)
self.layout.addWidget(widget)
def __init__(self):
super().__init__()
self.add('line_name', QLabel("Name")
self.add('input_name', QInput("Example Name")
self.add('line_email', QLabel("Email")
self.add('input_email', QInput("[email protected]")
self.add('radio1', QRadioButton("Option 1")
self.add('radio2', QRadioButton("Option 2")
self.add('radio3', QRadioButton("Option 3")
< /code>
Я ищу более подробный ответ о том, почему такая функция не является «по умолчанию», или если есть проблемы с моим решением. Это общий вопрос, спрашивающий, есть ли способ сделать это лучше, есть ли недостатки моего текущего решения?

Подробнее здесь: https://stackoverflow.com/questions/797 ... in-pyside6
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»