PyQt5控件的使用

PyQt5版本 5.10 记录自己在开发中遇到的问题,非控件的全部使用技巧

控件列表

  1. QTableWidget
  2. QTabWidget
  3. QPixmap
  4. 图表工具QChart
  5. 下拉选择框QComboBox

QTableWidget问题列表:

  1. 空间不够时单元格文字显示不全
  2. 设置Item背景色和字体颜色

场景:当空间不够时,单元格内容会显示不完全出现省略号…,如下
在这里插入图片描述
方案:

table_object.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)  # 根据内容自适应
场景:需要给表格设置行间隔不同颜色时使用

在这里插入图片描述
方案1:

# 先开启隔行的背景颜色设置
QTableWidgetObj.setAlternatingRowColors(True)
# 再使用qss设置
QTableWidgetObj.setStyleSheet("alternate-background-color: rgb(218, 233, 231); /* 蓝色 */ ")

方案2:

# 偶数行设置背景色
if (row & 1) == 0:  # 偶数行
	# 背景色
	QTableWidgetItem.setBackground(QBrush(QColor(218, 233, 231))) 
	# 字体色
	QTableWidgetItem.setForeground(QBrush(QColor(255, 0, 0)))

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-华丽的分割线=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

QTabWidget问题列表:

  1. 部分tab的关闭按钮显示,部分不显示的技巧
  2. tab标签头样式美化

1 关闭按钮部分显示

QTabWidget.setTabsClosable(True)  # 先设置显示关闭按钮
"""
QTabWidget.tabBar().setTabButton(index, position, QWidget)
设置不让显示关闭按钮的tab
.tabBar()  获取标签头对象
.setTabButton()  设置按钮
参数:index - 标签索引
	  position - QTabBar.RightSide (标签位置)
	  QWidget - 设置为 None 即可 
例如设置第一个不显示如下:
"""
QTabWidget.tabBar().setTabButton(0, QTabBar.RightSide, None)

2 样式美化

.setStyleSheet("""
       QTabBar::pane{
           border: 0.5px solid rgb(180,180,180);
       }
       QTabBar::tab{
           min-height: 25px
       }
       QTabBar::tab:selected {
       
       }
       QTabBar::tab:!selected {
           background-color:rgb(180,180,180)
       }
       QTabBar::tab:hover {
           color: rgb(20,100,230);
           background: rgb(220,220,220)
       }
       """)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-华丽的分割线=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

QPixmap问题列表:

  1. 加载图片显示的方式
"""1 从本地文件加载"""
from PyQt5.QtGui import QPixmap, QImage
.setPixmap(QPixmap('media/images/start.png'))  # 文件路径从项目根目录下开始即可
"""2 从网络加载"""
image = QImage.fromData(map_stream)  # 参数为图片二进制流,请求的结果
.setPixmap(QPixmap.fromImage(image))

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-华丽的分割线=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

QChart问题列表:
  1. 安装使用方式
  2. Qchart图表有关背景的一些设置
  3. 图线出现模糊轮廓的问题
  4. 自定义轴刻度不对齐的问题

QtChart是单独一个模块,需要安装pip install pyqtchart==5.10 版本请配合PyQt版本安装。
使用方式: from PyQt5.QtChart import QChartView, QChart

有关背景的一些设置:
1 隐藏背景网格线:

axisY.setGridLineVisible(False);   # 隐藏背景网格Y轴框线
axisX.setGridLineVisible(False);   # 隐藏背景网格X轴框线

2 图例设置

chart.legend().setVisible(True)            # 图例显示
chart.legend().setAlignment(Qt.AlignBottom)  # 图例向下居中

3 边框间距

chart.setContentsMargins(0, 0, 0, 0)  # 设置外边界全部为0
chart.setMargins(QMargins(0, 0, 0, 0))  # 设置内边界全部为0
chart.setBackgroundRoundness(0)       # 设置背景区域无圆角

4 设置画布背景

chartView。setBackgroundBrush(QBrush(QColor(34,36,42)))

有时候在画柱形图或散点图由于数据量大,会出现如下情况,例如我画了柱形图:
在这里插入图片描述
原来是QT绘制图形时,会用到QBrush和QPen,QPen用于绘制轮廓,QBrush用于绘制填充,默认情况下,不敢是QScatterSeries绘制散点还是QBarSet绘制柱形,用的QPen的颜色是白色的,也就是会出现白色的边框,由于柱形够小被白边挡住了,所以看到了只是模糊的轮廓。

解决方案:设置QPen,有3个方法

bar = QBarSet()  # scat = QScatterSeries() 同样用法
# 方法1-设置画笔的粗细为0
"""此法慎用,因为最终图像不设置颜色默认是黑色。其余两种还是保留自动颜色设置"""
pen = Qpen()
pen.setWidth(0)
bar.setPen(pen)
 
# 方法2-把画笔的颜色设置为透明
bar.setPen(QPen(Qt.transparent))
 
# 方法3-不使用画笔(只用QBrush填充)
bar.setPen(QPen(Qt.NoPen))

选择自己喜欢的方式设置即可。
在这里插入图片描述

参照我的另一篇博文:PyQt5 QtChart自定义轴代码顺序

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-华丽的分割线=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

1 动态添加选项后文字被覆盖

每次使用QComboBox都是一种修炼,它虽好用,但样式太难整。动态添加选项后更是生不如死。
在这里插入图片描述
解决方案:这里记录2中方法:
1 使用此方法会改变整个控件的大小:
QComboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)
2 使用此方法不改变整个控件大小:
QComboBox.view().setFixedWidth(最长字体的长度)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值