PyQt4 treewidget 选择改变颜色,并设置可编辑

21 篇文章 0 订阅
13 篇文章 1 订阅
# -*- coding: utf-8 -*-
import sys
from PySide.QtGui import *
from PySide.QtCore import *

  
global Item_temp
Item_temp=''

    
class TreeWidget(QWidget):
    def __init__(self):
        super(TreeWidget, self).__init__()
        self.setWindowTitle('TreeWidget')
        
        self.tree = QTreeWidget()  # 实例化一个TreeWidget对象
        self.tree.setColumnCount(2)  # 设置部件的列数为2
        self.tree.setDropIndicatorShown(True)

        self.tree.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.tree.setHeaderLabels(['Key', 'Value'])  # 设置头部信息对应列的标识符
        
        

        # 设置root为self.tree的子树,故root是根节点
        root = QTreeWidgetItem(self.tree)
        root.setText(0, 'root')  # 设置根节点的名称
        
        root.setCheckState(0, Qt.Unchecked);
        root.setFlags(root.flags() | Qt.ItemIsEditable)
        #设置可编辑
        

        # 为root节点设置子结点
        child1 = QTreeWidgetItem(root)
        child1.setText(0, 'child1')
        child1.setText(1, 'name1')
        child1.setCheckState(0, Qt.Unchecked);
        
        
        
        child2 = QTreeWidgetItem(root)
        child2.setText(0, 'child2')
        child2.setText(1, 'name2')
        child2.setCheckState(0, Qt.Unchecked);
        
        child3 = QTreeWidgetItem(root)
        child3.setText(0, 'child3')
        child3.setCheckState(0, Qt.Unchecked);
        
        child4 = QTreeWidgetItem(child3)
        
        child4.setText(0, 'child4')
        child4.setToolTip(0,'child4')
        #child4.statusTip(0)
        QToolTip.setFont(QFont('OldEnglish',  30))
        child4.setText(1, 'name4')
        child4.setToolTip(1,'name4')
        child4.setCheckState(0, Qt.Unchecked);

        child5 = QTreeWidgetItem(child3)
        child5.setText(0, 'child5')
        child5.setToolTip(0,'child5')
        #child5.statusTip(0)
        QToolTip.setFont(QFont('OldEnglish',  30))
        child5.setText(1, 'name5')
        child5.setToolTip(1,'name5')
        child5.setCheckState(0, Qt.Unchecked);
        

        button=QPushButton("test")
        self.lay=QVBoxLayout()
        self.lay.addWidget(button)
        self.lay.addWidget(self.tree)

        button.clicked.connect(self.getText)
        #self.tree.itemChanged.connect(self.handleChanged)
        self.tree.itemDoubleClicked.connect(self.handleChanged)

        #self.tree.itemDoubleClicked.connect(self.handleChanged)
        
        self.tree.addTopLevelItem(root)
        self.setLayout(self.lay)  # 将tree部件设置为该窗口的核心框架
    def handleChanged(self, item, column):
        #print dir(item)
        global Item_temp
        if Item_temp=="":
            Item_temp=(item,column)
            item.setBackground(column,QColor(100,150,50))
            print Item_temp
        else:
            print Item_temp
            Item_temp[0].setBackground(Item_temp[1],QColor(255,255,255))
            item.setBackground(column,QColor(120,150,50))
            Item_temp=(item,column)
            print Item_temp

        
        #self.tree.selectedItems()
        #item.setBackgroundColor(column,QColor(40,150,50))
        #col=QColor(190,150,50)
        #item.setForeground(column,QBrush(col))
        
        #print dir(item)
        
 
        
    def getText(self):
        t=QTreeWidgetItemIterator(self.tree);
        #print dir(QTreeWidgetItemIterator)
        while(t):
            try:
                print t.value().text(0)
            except:
                break
            t.next()
            #print t
        


app = QApplication(sys.argv)
#app.aboutToQuit.connect(app.deleteLater)
tp = TreeWidget()
tp.show()
#app.installEventFilter(tp)
app.exec_()

在这里插入图片描述

#root.setFlags(root.flags() | Qt.ItemIsEditable)
#设置可编辑
#item.setBackground(column,QColor(120,150,50))
#设置背景颜色
#getText 获取所有item(迭代)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值