纳速健身

 找回密码
 注册

扫一扫,访问微社区

查看: 8|回复: 0

[Python] [pyqt5]PYQT5表格及样式设置方法

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

PYQT5遇到的问题和解决
1.给table添加样式
table
透明度设置
构造一个含图片的label,再用setCellWidget把label插入单元格
1.给table添加样式
1.qApp.setStyleSheet("*{font-size:16px}"),设置全局的字体,qApp为全局变量

  1. #选中单元格颜色
  2. tab.setStyleSheet(“selection-background-color:rgb(203,235,246)”)

  3.     单元格字体颜色
  4.    textFont = QFont("song", 8, QFont.Bold)
  5.     textFont = QFont("song", 8)
  6.     tab.setFont(textFont)

  7.     # # 设置横向表头加粗
  8.     # font = tab.horizontalHeader().font()
  9.     # font.setBold(True)
  10.     # tab.horizontalHeader().setFont(font)
  11.     #
  12.     # #竖向加粗
  13.     # font1=tab.verticalHeader().font()
  14.     # font1.setBold(True)
  15.     # tab.verticalHeader().setFont(font1)

  16.     #设置表头内某个元素的字体加粗横向:
  17.     # font = QFont()
  18.     # font.setBold(True)
  19.     # item = tab.horizontalHeaderItem(0)
  20.     # item.setFont(font)


  21.     # item = tab.horizontalHeaderItem(1)
  22.     # # item.setForeground(QBrush(QColor(255,0,0)))
  23.     # item.setForeground(QBrush(QColor(203,235,246)))

  24.     # #设置纵向表头
  25.     # item=tab.verticalHeaderItem(1)
  26.     # item.setForeground(QBrush(QColor(255, 0, 0)))

  27.     #循环横向设置表头颜色和字体
  28.     for index in range(tab.columnCount()):
  29.         headItem = tab.horizontalHeaderItem(index)
  30.         headItem.setFont(QFont("song", 12, QFont.Bold))
  31.     #循环竖向设置表头颜色和字体
  32.     for index in range(tab.rowCount()):
  33.         headItem=tab.verticalHeaderItem(index)
  34.         try:
  35.             headItem.setFont(QFont("song", 10, QFont.Bold))
  36.         except:
  37.             pass


  38.     text="FAIL"
  39.     text1="N/A"
  40.     #查找符合需求的单元格,以对象的方式,放入列表中
  41.     items=tab.findItems(text,QtCore.Qt.MatchExactly)
  42.     items1=tab.findItems(text1,QtCore.Qt.MatchExactly)
  43.       if len(items)>0:
  44.         for i in items:
  45.             i.setBackground(QBrush(QColor(220,255,0)))#背景色
  46.             i.setForeground(QBrush(QColor(255,0,0)))#字体色
  47.     if len(items1)>0:
  48.         for i in items1:
  49.             i.setBackground(QBrush(QColor(255,255,0)))
  50.             i.setForeground(QBrush(QColor(255,0,255)))
复制代码


##重写击键事件:
def keyPressEvent(self, QKeyEvent): # 重写按键事件
print(QKeyEvent.key())
# if QKeyEvent.key() == Qt.Key_Enter: # 按Enter
if QKeyEvent.key() == 16777220: # key_enter=16777220:
以下写要处理的方法。
以下为网络转载,可以尝试使用:

table
  1. self.MyTable = QtGui.QTableWidget(5, 3)
  2. self.MyTable.setWindowOpacity(0.8)
  3. self.MyTable.verticalHeader().setVisible(False) # 表头不可见
  4. self.MyTable.horizontalHeader().setVisible(False) # 表头不可见

  5. self.MyTable.horizontalHeader().setStretchLastSection(True) # 单元横向高度自适应。铺满窗口
  6. self.MyTable.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
  7. self.MyTable.verticalHeader().setStretchLastSection(True) # 单元竖直高度自适应。铺满窗口
  8. self.MyTable.verticalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
  9. self.MyTable.setStyleSheet(“selection-background-color:lightblue;”) # 选中时背景色
  10. self.MyTable.setSelectionMode(QtGui.QAbstractItemView.NoSelection) # 不可选中
  11. self.MyTable.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) # 不可编辑
  12. self.MyTable.setShowGrid(False) # 网格线条不可见
复制代码


透明度设置
  1. pll = self.MyTable.palette()
  2. pll.setBrush(QtGui.QPalette.Base, QtGui.QBrush(QtGui.QColor(224, 244, 220, 50)))
  3. self.MyTable.setPalette(pll)

  4. label = QtGui.QLabel(u"xxx")
  5. label.setStyleSheet(“background-image:url(:/0104.png); color:rgb(105,39,26);”)
  6. label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter)
  7. self.MyTable.setCellWidget(0, 0, label)

  8. QTableWidgetItem *columnHeaderItem0 = ui->tableWidget->horizontalHeaderItem(i); //获得水平方向表头的Item对象
  9. columnHeaderItem0->setFont(QFont(“Helvetica”)); //设置字体
  10. columnHeaderItem0->setBackgroundColor(QColor(13, 13, 13)); //设置单元格背景颜色
  11. columnHeaderItem0->setTextColor(QColor(233, 233, 233)); //设置文字颜色

  12. ui->tableWidget->horizontalHeader()->setStyleSheet(“border:2px groove gray;border-radius:10px;padding:2px 4px;background-color: rgb(170, 170, 255);font: 20pt ‘华文隶书’;”);
复制代码


构造一个含图片的label,再用setCellWidget把label插入单元格
首先生成一个MyTable=QTableWidget()

1.设置表单样式

设置列数:MyTable.setColumnCount(3)

设置行数:MyTable.setRowCount(4)

设置默认列宽:myTable.horizontalHeader().setDefaultSectionSize(200)

设置默认行高:myTable.verticalHeader().setDefaultSectionSize(300)

设置某一列宽:myTable.horizontalHeader().resizeSection(0,300) #设置第一列的宽度

设置某一行高:myTable.verticalHeader().resizeSection(0,500) #设置第一行的高度

设置某一列宽:

设置某一列高:

设置横向表头的高度:myTable.horizontalHeader().setFixedHeight(100),且只能用该类方法设置横向表头的高度,

设置纵向表头的宽度:myTable.verticalHeader().setFixedWidth(300) ,且只能用该类方法设置纵向表头的宽度

设置表头不可点击:myTable.verticalHeader().setClickable(False)

设置表头字体加粗:font=myTable.horizontalHeader().font()

  1.                             font.setBold(False)
  2.                             myTable.horizontalHeader().setFont(font)   是指整个横向表头
复制代码


设置表头不塌陷:myTable.horizontalHeader().setHighlightSections(False)

设置表头内某个元素的颜色:item=myTable.horizontalHeaderItem(1)
item.setTextColor(QColor(“red”)) ,设置横向表头第二个元素的颜色

设置表头内某个元素的字体加粗:font=QFont()
font.setBold(True)
item=myTable.horizontalHeaderItem(0)
item.setFont(font), 设置横向表头第一个元素的字体加粗

设置表头内容:list=[u’宝贝’,u’日子’,u’多个’,u’话费’]
myTable.setHorizontalHeaderLabels(list)

设置表格内容的填充属性:

设置隐藏表头:myTable.horizontalHeader().setVisible(False)

设置表格外部无边框:myTable.setFrameShape(QFrame.Box)

设置不显示格子线:myTable.setShowGrid(False)

设置表格的编辑属性:QAbstractItemView.NoEditTriggers:不可编辑

                                QAbstractItemView.CurrentChanged:改变了即可编辑

                                QAbstractItemView.DoubleClicked:连续双击即可编辑

                                QAbstractItemView.SelectedClicked:在被选中的情况下单击一次即可编辑

                                QAbstractItemView.EditKeyPressed:在按下平台的编辑键那个项目上即可编辑

选择时每次选择一行:myTable.setSelectionBehavior(QAbstractItemView.SelectRows),

                                也可以设置参数为SelectColumns,这样就会选择一列。

选择表格模式:myTable.setSelectionMode(QAbstractItemView.ExtendedSelection)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表