from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from datetime import *
import sqlite3
import sys
import time
import datetime
class MyDelegateTreeWidget(QStyledItemDelegate):
def __init__(self):
QItemDelegate.__init__(self)
def sizeHint(self, option, index):
return QSize(50, 60)
class CustomizeTreeWidget(QTreeWidget):
def __init__(self):
super().__init__()
self.setColumnCount(2)
self.sizeHintForRow(50)
self.setFocusPolicy(Qt.NoFocus)
inventoryTreeWidgetFont = QFont('Helvetica', 8)
inventoryTreeWidgetFont.setBold(True)
self.setFont(inventoryTreeWidgetFont)
self.header().setMinimumSectionSize(2)
self.header().resizeSection(0, 150)
self.header().resizeSection(1, 2)
self.header().setStretchLastSection(True)
self.header().swapSections(1, 0)
self.expandToDepth(True)
self.setHeaderHidden(True)
self.setAnimated(True)
self.setUniformRowHeights(True)
self.setStyleSheet('QTreeWidget {border: none; border-image: none; background-color: rgb(240,240,240); color: rgb(80,80,80)}'
'QTreeWidget::item:hover {border: none; border-image: none; background-color: rgb(180,180,180); color: rgb(50,50,50)}'
'QTreeWidget::item:selected {border: none; border-image: none; background-color: rgb(39,39,37); color: rgb(245,245,245)}'
'QTreeWidget::branch:hover {border: none; border-image: none; background: rgb(180,180,180); color: rgb(50,50,50)}'
'QTreeWidget::branch::closed::has-children {image: url(TDLSystemPictures/OtherIcons/rightArrowIcon3.png); '
'icon-size: 1px}'
'QTreeWidget::branch::open:has-children {image: url(TDLSystemPictures/OtherIcons/downArrowIcon3.png);}'
'QTreeWidget::branch:selected {border: none; border-image: none; background: rgb(39,39,37); color: rgb(245,245,245)}')
self.setRootIsDecorated(True)
self.setIconSize(QSize(35, 30))
treeWidgetDelegate = MyDelegateTreeWidget()
self.setItemDelegate(treeWidgetDelegate)
class SystemMainPage(QWidget):
def __init__(self):
super().__init__()
self.move(400, 150)
self.setMinimumWidth(1200)
self.setMinimumHeight(800)
self.setStyleSheet('QWidget {background-color: rgb(200,200,200)}')
self.setWindowTitle('Sample')
self.mainPageLayout = QHBoxLayout()
self.mainPageLayout.setContentsMargins(0, 0, 0, 0)
self.mainPageLayout.setSpacing(0)
home_SubMenuTreeWidget = CustomizeTreeWidget()
###########################################################
# ================================ Tree Widget Item (Start)
###########################################################
#
# ================== Client Masterfile
sampleIcon = QIcon('Icon1.png')
clientMasterfileContent = QTreeWidgetItem(home_SubMenuTreeWidget, ['Item 1'])
clientMasterfileContent.setIcon(0, sampleIcon)
clientMasterfileContent.icon(25)
clientMasterfileContentLight = QFrame()
clientMasterfileContentLight.setFixedWidth(2)
clientMasterfileContentLight.setStyleSheet('QFrame {border: none; background-color: rgb(37,39,45)}')
home_SubMenuTreeWidget.setItemWidget(clientMasterfileContent, 1, clientMasterfileContentLight)
createClient_Content = QTreeWidgetItem(clientMasterfileContent, ['Item 1- A'])
# ================== Billing
color1 = QColor(255, 35, 35)
billingContent = QTreeWidgetItem(home_SubMenuTreeWidget, ['Item 2'])
billingContent.setIcon(0, QIcon('Icon2.png'))
billingContentLight = QFrame()
billingContentLight.setFixedWidth(2)
billingContentLight.setStyleSheet('QFrame {border: none; background-color: rgb(37,39,45)}')
home_SubMenuTreeWidget.setItemWidget(billingContent, 1, billingContentLight)
self.mainPageLayout.addWidget(home_SubMenuTreeWidget)
self.setLayout(self.mainPageLayout)
if __name__ == '__main__':
homeApplication = QApplication(sys.argv)
homeApplication.setStyle('Fusion')
homeMainWindow = SystemMainPage()
homeMainWindow.show()
sys.exit(homeApplication.exec_())
# ====== Creating Customized Tree Widget (Start)
已编辑:代码可以运行,但我没有包含示例图片或图标。任何图片都可以。请用正确的图片替换“QIcon(Icon1.png)”。
每次单击 TreeWidgetItem 时,颜色的图标是什么都没有关系,它总是会给它一个蓝色调。
想要的结果:我想控制图标的颜色,就像我们在可以配置 RGB 的样式表上所做的那样。或者如果图标的颜色不会改变就可以了。