Vel*_*dan 1 position python-3.x pyqt5
我正在使用 PyQT,并且我有非常简单的结构网格布局和内部 BoxLayout 到该网格中(下面由 QtDesigner 生成的代码。抱歉,它的视图很难看)
简而言之,这是我的 BoxLayer
self.gridLayout.addLayout(self.buttonsLayer, 2, 0, 1, 2)
Run Code Online (Sandbox Code Playgroud)
后来我尝试通过执行此指令来更改它的位置(我想将此布局移动到 GridLayout 的第 3 行)
self.gridLayout.addLayout(self.buttonsLayer, 3, 0, 1, 2)
Run Code Online (Sandbox Code Playgroud)
但我有一个错误QLayout::addChildLayout: 布局“buttonsLayer”已经有一个父级
一开始,我在网格布局中有按钮,但后来我决定将它们推入某个容器中,并仅移动该容器,而不是移动 2 个对象。但是..奇怪的是,对于单个按钮这个技巧是有效的,但对于布局它不起作用。
也许有人知道为什么它不起作用以及如何更改 BoxLayer 的位置?感谢您提供任何信息!
MainWindow.setObjectName("MainWindow")
MainWindow.resize(608, 173)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.addFileBtn_0 = QtWidgets.QPushButton(self.centralwidget)
self.addFileBtn_0.setObjectName("addFileBtn_0")
self.gridLayout.addWidget(self.addFileBtn_0, 0, 0, 1, 1)
self.lineEditFile_0 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEditFile_0.setText("")
self.lineEditFile_0.setObjectName("lineEditFile_0")
self.gridLayout.addWidget(self.lineEditFile_0, 0, 1, 1, 1)
self.addFileBtn_1 = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.addFileBtn_1.sizePolicy().hasHeightForWidth())
self.addFileBtn_1.setSizePolicy(sizePolicy)
self.addFileBtn_1.setObjectName("addFileBtn_1")
self.gridLayout.addWidget(self.addFileBtn_1, 1, 0, 1, 1)
self.lineEditFile_1 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEditFile_1.setObjectName("lineEditFile_1")
self.gridLayout.addWidget(self.lineEditFile_1, 1, 1, 1, 1)
self.buttonsLayer = QtWidgets.QVBoxLayout()
self.buttonsLayer.setObjectName("buttonsLayer")
self.addFileGroupBtn = QtWidgets.QPushButton(self.centralwidget)
self.addFileGroupBtn.setObjectName("addFileGroupBtn")
self.buttonsLayer.addWidget(self.addFileGroupBtn)
self.saveConfigBtn = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.saveConfigBtn.sizePolicy().hasHeightForWidth())
self.saveConfigBtn.setSizePolicy(sizePolicy)
self.saveConfigBtn.setObjectName("saveConfigBtn")
self.buttonsLayer.addWidget(self.saveConfigBtn)
self.gridLayout.addLayout(self.buttonsLayer, 2, 0, 1, 2)
Run Code Online (Sandbox Code Playgroud)
经过 10-20 次不同的尝试来实现我想要的目标和本机 QT 文档调查后,我终于找到了一个可能的解决方案。我不确定这是否是一种理想的方式,但它确实有效。如果您有更好的解决方案 - 请告诉我!我会被占用。
这是解决方案
# remove this item(it's aLayout so we can't use removeWidget) from GridLayout
self.gridLayout.removeItem(self.buttonsLayer)
# now we can insert it into some new place. Voalia =)
self.gridLayout.addLayout(self.buttonsLayer, self.fieldGroupCounter + 1, 0, 1, 2)
Run Code Online (Sandbox Code Playgroud)
希望它能帮助别人!亲切的问候。
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |