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(最長字體的長度)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章