2014-02-11 64 views
1

我對PyQt4完全陌生,我正在使用一個包含QGridLayout的用戶界面,其中包含一個QLabel,一個QLineEdit,一個QCombobox和兩個QPushButton。PyQt4:將兩個元素嵌套到一個單元中

我已經理解的是,QGridLayout對象被含有的元素如下:

(0,0): QLabel 
(1,0): QPushButton 
(0,1): QLineEdit 
(1,1): QComboBox 
(1,2): QPushButton 

採樣指令添加這些窗口小部件中的一個來的GridLayout的是以下的(這是該組合框的情況下):

self.gridLayout_3.addWidget(self.comboBox, 1, 1, 1, 1) 

結果如下:

Output

我想在空位置(0,2)添加兩個新元素(一個QLineEdit和一個QLabel)。但是我不能在那裏添加。所以我想知道,是否有任何方法可以將兩個元素「嵌套」到同一個位置(例如,使用方法.addWidget的其他參數),還是需要使用新參數重新設置所有其他元素?

這裏是什麼,我想獲得一個輸出樣本:

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) 

Sample Output

代碼示例(位置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一起寫入「Offset」,它將重疊QLineEdit。

+0

你能發佈您的代碼的例子嗎?也許有人可以幫助你,如果你提供測試和建議的起點。 –

+0

@xndrme,我添加了我感興趣修改的部分代碼,問題實際上是這僅僅是一個巨大的用戶界面的一部分,所以我不能在這裏發佈一些可執行代碼。 –

回答

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_() 
相關問題