PyQt4:将两个元素嵌套到一个单元格中

时间:2014-02-11 13:50:39

标签: python pyqt

我是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) 

结果如下:

Output

我想在空位(0,2)添加两个新元素(QLineEdit和QLabel)。但是我无法在那里添加。所以我想知道,有没有办法将两个元素“嵌套”到同一个地方(例如使用方法.addWidget的其他一些参数)或者我是否需要用新参数重新设置所有其他元素?

以下是我想要获得的示例输出:

Sample Output

代码示例(在位置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重叠。

1 个答案:

答案 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_()