# -*- coding: cp936 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class InlineEditor(QWidget):
_MUTE = ‘MUTE‘
def __init__(self, parent):
QWidget.__init__(self, parent)
self.setAutoFillBackground(True)
lo = QHBoxLayout()
lo.setMargin(0)
lo.setSpacing(4)
self._cbFoo = QComboBox()
for x in ["ABC", "DEF", "GHI", "JKL"]:
self._cbFoo.addItem(x)
self._leBar = QLineEdit(‘‘, self)
self._leBar.setValidator(QIntValidator(0, 999999, self))
lo.addWidget(self._cbFoo, 3)
lo.addSpacing(5)
lo.addWidget(QLabel(‘Bar:‘))
lo.addWidget(self._leBar, 3)
lo.addStretch(5)
self.setLayout(lo)
class Form(QDialog):
def __init__(self,parent=None):
QDialog.__init__(self, parent)
grid = QGridLayout()
tree = QTreeWidget()
tree.setColumnCount(2)
for n in range(3):
i = QTreeWidgetItem(tree) # 创建QTreeWidget的子项目i
i.setText(0,"first " + str(n)) # 设置第0列的文本
i.setText(1,"second")
for m in range(3):
j = QTreeWidgetItem(i) # 为QTreeWidget子项目i创建子项目
j.setText(0,"child first "+str(m))
b1 = QCheckBox("push me 0",tree) # 注意此处第二个参数,如果没有这个参数创建不成功
tree.setItemWidget(tree.topLevelItem(0).child(1), 1, b1) #在第一个项目的第一个子项目的第2列中放置控件。
item=InlineEditor(tree) # 处理多个控件的组合
tree.setItemWidget(tree.topLevelItem(0).child(1), 1, item)
grid.addWidget(tree)
self.setLayout(grid)
app = QApplication([])
form=Form()
form.show()
app.exec_()