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