PyQt:更改最小宽度比例

2024-05-16 09:17:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在^ {< CD2>}中安排三^ {}小部件,这样左边一个就靠左,右边一个靠右,中间一个填充中间剩下的宽度。我用以下代码实现了这一点。但是,如何使中心按钮的最小宽度为其他按钮宽度的X倍?你知道吗

当前,当窗口调整到最小宽度时,所有按钮都缩小到如下所示的相同宽度-但是我希望中间的按钮更宽。你知道吗

代码(在继承QWidget的类的__init__方法中):

self.layout = QtWidgets.QHBoxLayout(self)

self.btn_left = QtWidgets.QToolButton(self)
size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
size.setHorizontalStretch(0)
size.setVerticalStretch(0)
self.btn_left.setSizePolicy(size)
self.btn_left.setContentsMargins(0,0,0,0)
self.btn_left.setIcon(qta.icon('fa.chevron-left'))
self.layout.addWidget(self.btn_left, 0, Qt.AlignLeft)

self.btn_centre = QtWidgets.QToolButton(self)
size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
size.setHorizontalStretch(1)
size.setVerticalStretch(0)
self.btn_centre.setSizePolicy(size)
self.btn_centre.setContentsMargins(0,0,0,0)
self.btn_centre.setIcon(qta.icon('fa.play'))
self.layout.addWidget(self.btn_centre, 1)

self.btn_right = QtWidgets.QToolButton(self)
size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
size.setHorizontalStretch(0)
size.setVerticalStretch(0)
self.btn_right.setSizePolicy(size)
self.btn_right.setContentsMargins(0,0,0,0)
self.btn_right.setIcon(qta.icon('fa.chevron-right'))
self.layout.addWidget(self.btn_right, 0, Qt.AlignRight)

self.setLayout(self.layout)
self.show()

Tags: selfrightsize宽度left按钮fixedlayout