注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

哈欠涟涟的博客

学习python、pyqt与django

 
 
 

日志

 
 

pyqt中QTreeWidget增加控件  

2009-12-22 13:20:46|  分类: PyQt |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近想实现一个类似Qt Designer中的属性编辑器,化了好长时间总算在QTreeWidget加上了控件。

代码如下:

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

  评论这张
 
阅读(1816)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017