【问题标题】:PyQt4: nesting two elements into one cellPyQt4:将两个元素嵌套到一个单元格中
【发布时间】:2014-03-09 08:23:51
【问题描述】:

我对 PyQt4 完全陌生,我正在开发一个用户界面,其中包含一个 QGridLayout,一个 QLabel、一个 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 相同的单元格以在其上写入“偏移量”,它只会与 QLineEdit 重叠。

【问题讨论】:

  • 你能发布一个你的代码示例吗?如果您提供测试和建议的起点,也许有人可以帮助您。
  • @xndrme ,我添加了我有兴趣修改的代码部分,问题实际上是这只是一个巨大的用户界面的一部分,所以我不能真正发布一些可执行代码在这里。

标签: python pyqt


【解决方案1】:

您可以使用 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_()

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多