我是PyQt4的新手,我正在开发一个用户界面,其中包含一个带有一个QLabel的QGridLayout,一个QLineEdit,一个QCombobox和两个QPushButton。
我已经了解QGridLayout对象包含如下元素:
(0,0): QLabel
(1,0): QPushButton
(0,1): QLineEdit
(1,1): QComboBox
(1,2): QPushButton
将一个这样的小部件添加到GridLayout的示例指令如下(这是Combobox的情况):
self.gridLayout_3.addWidget(self.comboBox, 1, 1, 1, 1)
结果如下:
我想在空位(0,2)添加两个新元素(QLineEdit和QLabel)。但是我无法在那里添加。所以我想知道,有没有办法将两个元素“嵌套”到同一个地方(例如使用方法.addWidget的其他一些参数)或者我是否需要用新参数重新设置所有其他元素?
以下是我想要获得的示例输出:
代码示例(在位置0,0添加QLineEdit):
self.label_1 = QtGui.QLabel(self.gridLayoutWidget_3)
self.label_1.setObjectName(_fromUtf8("label_1"))
self.label_1.addWidget(self.label_1, 0, 0, 1, 1)
到目前为止我能做到的事情:
self.OffsetCond = QtGui.QLineEdit(self.gridLayoutWidget_3)
self.OffsetCond.setObjectName(_fromUtf8("OffsetCond"))
self.gridLayout_3.addWidget(self.OffsetCond, 0,2,1,1)
self.OffsetCond.setMaximumSize(30, 20)
这个方法的问题是QLineEdit停留在(0,2)单元格的左边(而不是右边,我想要它的位置),如果我试图做同样的话进入与QLineEdit相同的单元格中写入“Offset”,它将与QLineEdit重叠。
答案 0 :(得分:0)
您可以使用QGridLayout.addLayout
的嵌套布局执行您想要的操作:
import PyQt4.QtGui as gui
app = gui.QApplication([])
w = gui.QWidget()
gl = gui.QGridLayout(w)
lab = gui.QLabel(text='Nom')
gl.addWidget(lab,0,0)
le = gui.QLineEdit(text='BarsCond')
gl.addWidget(le,0,1)
##########################
hl = gui.QHBoxLayout()
label_1 = gui.QLabel(text='Offset')
OffsetCond = gui.QLineEdit(text='-1')
hl.addWidget(label_1)
hl.addWidget(OffsetCond)
gl.addLayout(hl,0,2)
############################
pb1 = gui.QPushButton(text='BarsC')
gl.addWidget(pb1,1,0)
cb = gui.QComboBox()
gl.addWidget(cb,1,1)
pb2 = gui.QPushButton(text='NBars')
gl.addWidget(pb2,1,2)
w.show()
app.exec_()