Python PyQt5:QVBoxLayout:如何将三个按钮组合成一个组?
因此,我制作了一个带有QVBoxLayout的简单PyQt5应用程序。显然,我添加的每个按钮都从一端延伸到另一端,并且它们都叠在一起。如何将按钮添加到QVBoxLayout,即屏幕上的一组三个小按钮?因此,您的按钮需要一个嵌套在Python PyQt5:QVBoxLayout:如何将三个按钮组合成一个组?,python,qt,pyqt5,qpushbutton,qvboxlayout,Python,Qt,Pyqt5,Qpushbutton,Qvboxlayout,因此,我制作了一个带有QVBoxLayout的简单PyQt5应用程序。显然,我添加的每个按钮都从一端延伸到另一端,并且它们都叠在一起。如何将按钮添加到QVBoxLayout,即屏幕上的一组三个小按钮?因此,您的按钮需要一个嵌套在QVBoxLayout中的QHBoxLayout: class Main(QMainWindow): def __init__(self, parent=None): super(Main, self).__init__(parent)
QVBoxLayout
中的QHBoxLayout
:
class Main(QMainWindow):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.vLayout = QVBoxLayout(self.centralWidget)
self.buttonsWidget = QWidget()
self.buttonsWidgetLayout = QHBoxLayout(self.buttonsWidget)
self.buttons = [QPushButton(c) for c in 'ABC']
for button in self.buttons:
self.buttonsWidgetLayout.addWidget(button)
self.placeHolder = QWidget()
self.placeHolder.setMinimumWidth(480)
self.placeHolder.setMinimumHeight(320)
self.placeHolder.setStyleSheet('* {background: red;}')
self.vLayout.addWidget(self.placeHolder)
self.vLayout.addWidget(self.buttonsWidget)
为了确保图元不会拉伸,可以使用特殊的 QSpacerItem元素 试试看:
from PyQt5 import Qt
class Widget(Qt.QWidget):
def __init__(self):
super().__init__()
layout = Qt.QVBoxLayout(self)
btn_layout = Qt.QHBoxLayout()
# !!!
btn_layout.addItem(Qt.QSpacerItem(0, 0, Qt.QSizePolicy.Expanding, Qt.QSizePolicy.Minimum))
btn1 = Qt.QPushButton("Button 1")
btn2 = Qt.QPushButton("Button 2")
btn3 = Qt.QPushButton("Button 3")
btn_layout.addWidget(btn1)
btn_layout.addWidget(btn2)
btn_layout.addWidget(btn3)
table = Qt.QTableWidget()
table.setRowCount(5)
table.setColumnCount(5)
layout.addWidget(table)
layout.addLayout(btn_layout)
if __name__ == '__main__':
app = Qt.QApplication([])
w = Widget()
w.show()
app.exec()
你有没有举个例子?你想要达到的目标的草图?是的!我在互联网上发现了这个(无法发布我的代码示例,因为我已经更改了它,试图实现我想要的)[link]顶部是我想要实现的,下面的三个按钮是我实现的好的,我在那里有一个交互式屏幕,所以按钮必须放在它下面(所以QVBoxLayout)否则它们会出现在屏幕的一侧,我有一个vtk渲染器,我需要三个按钮在下面。到目前为止,我只能在它的正下方实现三个H布局的长按钮,或者在它的侧面实现三个V布局的小按钮。但是我想在它下面放三个小的!非常感谢,添加到我的代码中,效果很好