Python PyQt4:将两个元素嵌套到一个单元格中
我对PyQt4完全陌生,我正在开发一个用户界面,其中包含一个QGridLayout,一个QLabel、一个QLineEdit、一个QCombobox和两个QPushButton 我知道QGridLayout对象包含以下元素:Python PyQt4:将两个元素嵌套到一个单元格中,python,pyqt,Python,Pyqt,我对PyQt4完全陌生,我正在开发一个用户界面,其中包含一个QGridLayout,一个QLabel、一个QLineEdit、一个QCombobox和两个QPushButton 我知道QGridLayout对象包含以下元素: (0,0): QLabel (1,0): QPushButton (0,1): QLineEdit (1,1): QComboBox (1,2): QPushButton 将这些小部件之一添加到GridLayout的示例说明如下(这是Combobox的示例): 结果如下:
(0,0): QLabel
(1,0): QPushButton
(0,1): QLineEdit
(1,1): QComboBox
(1,2): QPushButton
将这些小部件之一添加到GridLayout的示例说明如下(这是Combobox的示例):
结果如下:
我想在空位置(0,2)添加两个新元素(QLineEdit和QLabel)。然而,我不能在这两个方面都加上。所以我想知道,有没有办法将这两个元素“嵌套”到同一个位置(例如使用method.addWidget的一些其他参数),或者我需要用新参数重新设置所有其他元素
以下是我希望得到的示例输出:
代码示例(在位置0,0添加QLineEdit):
到目前为止我所能做的:
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写入同一单元格并在其上写入“偏移量”,它将与QLineEdit重叠 您可以使用嵌套布局和
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_()
你能发一个代码的例子吗?如果您提供测试和建议的起点,也许有人可以帮助您。@xndrme,我添加了我感兴趣修改的部分代码,问题是这只是一个庞大用户界面的一部分,所以我不能在这里发布一些可执行代码。
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)
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_()