Виджеты, поставляемые в комплекте с PyQt, - это базовые строительные блоки и удобные виджеты для удовлетворения общих потребностей и потребностей.Но когда вы начинаете получать пользовательские виджеты, у вас появляется свобода создавать подклассы для чего-то близкого и создавать собственные настраиваемые виджеты.
Давайте возьмем QGroupBox.Это в основном QFrame, составленный с QLabel наверху.Затем класс оборачивает некоторые методы, которые позволяют вам установить текст этой метки.Этот базовый виджет будет выглядеть так:
group = QtGui.QGroupBox()
group.setTitle("FOO")
Вместо этого мы можем взять QWidget и добавить QGroupBox с пустой меткой.А затем поместите кнопку в абсолютной позиции к родительскому виджету.Мы могли бы использовать QFrame, но с помощью QGroupBox вы получите желаемое мгновенное оформление.
class ButtonGroupBox(QtGui.QWidget):
def __init__(self, parent=None):
super(ButtonGroupBox, self).__init__(parent=parent)
self.layout = QtGui.QVBoxLayout(self)
self.layout.setContentsMargins(0,24,0,0)
self.groupBox = QtGui.QGroupBox(self)
self.button = QtGui.QPushButton("FOO", parent=self)
self.layout.addWidget(self.groupBox)
self.button.move(0, -4)
Вы можете расширить этот пользовательский класс с помощью методов, позволяющих изменить текст кнопки.Поле виджета вверху необходимо, чтобы дать вам дополнительное пространство для размещения кнопки над GroupBox