PyQt5版本 5.10 记录自己在开发中遇到的问题,非控件的全部使用技巧
控件列表
QTableWidget问题列表:
场景:当空间不够时,单元格内容会显示不完全出现省略号…,如下
方案:
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 关闭按钮部分显示
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 从本地文件加载"""
from PyQt5.QtGui import QPixmap, QImage
.setPixmap(QPixmap('media/images/start.png')) # 文件路径从项目根目录下开始即可
"""2 从网络加载"""
image = QImage.fromData(map_stream) # 参数为图片二进制流,请求的结果
.setPixmap(QPixmap.fromImage(image))
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-华丽的分割线=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
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自定义轴代码顺序
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-华丽的分割线=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
每次使用QComboBox都是一种修炼,它虽好用,但样式太难整。动态添加选项后更是生不如死。
解决方案:这里记录2中方法:
1 使用此方法会改变整个控件的大小:
QComboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)
2 使用此方法不改变整个控件大小:
QComboBox.view().setFixedWidth(最长字体的长度)