PyQt5 基礎知識(六):展示控件


3、 展示控件

3.1 QLabel

3.1.1 描述

提供了文本或圖像的顯示

  • 可以展示普通文本、數字、富文本、圖片和動畫

但是沒有提供用戶交互功能,繼承自QFrame

3.1.2 功能作用

3.1.2.1 基本功能

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)

l = QLabel("標簽哦", w)  # 創建一個標簽
"""
l.adjustSize()  # 根據內容適應標簽大小
l.setStyleSheet("background-color: skyblue;")

對齊
l.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)

縮進和邊距
l.setIndent(20)
l.setMargin(20)

文本格式
l.setTextFormat(Qt.TextFormat)  # PlainText/ RichText/ AutoText/ MarkdownText

小伙伴
l.setBuddy(QWidget)  # 參數是要關聯的輸入框,當點擊快捷鍵是可以快速定位到相應的文本框上面
內容縮放
l.setScaledContents(True)  # 設置圖片內容的縮放,適應控件大小,僅限於圖片

打開文本鏈接
l.setOpenExternalLinks(True)  # 使得可以打開超鏈接

單詞換行
l.setWordWrap(True)  # 設置單詞換行,同時也可以使用 \n 換行
"""

w.show()
sys.exit(app.exec_())

3.1.2.2 文本交互

# 設置交互模式
setTextInteractionFlags(Qt.TextInteractionFlags)
textInteractionFlags()

# 選中文本
setSelection(int start, int length)
hasSelection()
selectedText()
selectionStart()  # 返回開始位置的索引

Qt.TextInteractionFlags

  • Qt.NoTextInteraction:不可能進行交互
  • Qt.TextSelectableByMouse:可以使用鼠標選擇文本並使用上下文菜單或標准鍵盤快捷鍵將其復制到剪切板
  • Qt.TextSelectionByKeyboard:可以使用鍵盤上的光標鍵選擇文本,顯示文本光標
  • Qt.LinksAccessibleByMouse:可以使用鼠標突出顯示和激活鏈接
  • Qt.LinksAccessibleByKeyborad:可以使用選項卡聚焦鏈接並使用enter激活
  • Qt.TextEditable:改文字完全可以編輯
  • Qt.TextEditiorInteraction:文本編輯器的默認值;TextSelectableByMouse | TextSelectionByKeyboard | TextEditable
  • Qt.TextBrowserInteraction:文本瀏覽器的默認值; TextSelectableByMouse | TextSelectionByKeyboard | LinksAccessibleByMouse | LinksAccessibleByKeyborad

3.1.2.3 內容操作

3.1.2.3.1 文本字符串
text()
setText(QString)  # 里面可以添加富文本
3.1.2.3.2 數值數據
setNum(int / float)  # 設置數值
3.1.2.3.3 圖形圖像
setPicture(QPicture)  # 主要用於繪畫設備 
setPixmap(QPixmap)
3.1.2.3.4 動圖
setMovie(QMovie)  # 注意不是添加視頻,而是添加一個動圖
movie()  

此類用於顯示沒有聲音的簡單動畫

常用操作:

setScaledSize(QSize)
setPaused(bool)
setSpeed(int)  # setSpeed(200)  兩倍速播放
start()  # 開始播放
3.1.2.3.5 清空
clear()  # 清空所有內容

3.1.3 信號

# 超鏈接有關的信號
linkActivated(link_str)
linkHovered(link_str)

3.2 QLCDNumber

3.2.1 描述

展示LCD樣式的數字,它可以展示幾乎任何大小的數字;它可以顯示十進制、十六進制、八進制或二進制

繼承自QFrame

3.2.2 功能作用

3.2.2.1 基本使用

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)

ql = QLCDNumber(w)  # 構造函數,還可以傳入一個數字,限制要展示的內容的位數
ql.resize(100, 50)
ql.display("12345")  # 設置展示的內容,里面可以傳入字符串,浮點數據,整型數據
print(ql.value())  # 獲取ql里面的值,返回浮點類型數據
ql.setDigitCount(5)  # 限制5位數字
w.show()
sys.exit(app.exec_())

3.2.2.2 模式設置

setMode(QLCDNumber.Mode)
mode()
# 快速設置方法
setHexMode()  # 十六進制
setDecMode()  # 十進制
setOctMode()  # 八進制
setBinMode()  # 二進制

3.2.2.3 溢出判定

checkOverflower(float/ int)  # 判斷數據是否溢出,如果溢出會發送一個溢出信號

3.2.2.4 分段樣式

setSegmentStyle(QLCDNumber.SegmentStyle)
segmentStyle()

QLCDNumber.SegmentStyle:

  • QLCDNumber.Outline:生成填充了背景顏色的凸起部分
  • QLCDNumber.Filled:默認值,生成填充前景色的凸起部分
  • QLCDNumber.Flat:生成填充前景色的平坦段

3.2.3 信號

overflow()  # 當數據溢出時,發送信號

3.3 QProgressBar

3.3.1 描述

提供一個水平或垂直進度條;進度條用於向用戶提供操作進度提示,並向他們保證應用程序仍在運行

繼承自 QWidget

3.3.2 功能作用

3.3.2.1 基本功能

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)

qp = QProgressBar(w)  # 創建對象
qp.setMaximum(100)
qp.setMinimum(0)
# qp.setRange(0, 100)  # 設置取值范圍,最大值和最小值,當最大值和最小值相等時,處於繁忙狀態
qp.setValue(20)  # 設置當前的值
# qp.reset()  # 重置進度條
print(qp.value())  # 獲取當前進度條的值

# 設置進度條的方向
# pq.setOrientation(Qt.Orientation)

# 倒立外觀
# pq.setInvertedAppearance(bool)

w.show()
sys.exit(app.exec_())

3.3.2.2 格式設置

setFormat(str)  # %p 為百分比;%v 為當前值;%m 為總值
# 如 setFormat("已下載%p %")
resetFormat()  # 重置格式設置
setAlignment(Union[Qt.Alignment, Qt.AliginmentFlag])  # 格式化字符對齊方式

3.3.2.3 文本操作

setTextVisible(bool)  # 標簽是否可見
text()  # 獲取標簽文本內容
setTextDirection(QProcessBar.Direction)  # 控制文本的排列方向

3.3.3 信號

valueChanged(int)

3.4 QErrorMessaage

3.4.1 描述

錯誤消息小部件由文本標簽和復選框組成;該復選框允許用戶控制將來是否再次顯示相同的錯誤消息

繼承自QDialog

3.4.2 功能作用

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)

qb = QErrorMessage(w)  # 創建對象
qb.setWindowTitle("錯誤提示")  # 修改窗口標題
qb.showMessage("你確定要繼續操作嗎?")  # 如果設置多個,會一次一次展示出來
qb.exec()  # 展示對話框

QErrorMessage.qtHandler()  # 通過靜態方法,展示級別信息,使用此放你發后,后溪所有的返回均會使用對話框顯示
qDebug("xxx")  # 調試信息
qWarning("eee")  # 警告信息

w.show()
sys.exit(app.exec_())

3.4.3 信號

繼承父類

3.5 QProgressDialog

3.5.1 描述

提供一個緩慢的操作進度反饋,進度對話框用於向用戶指示操作符花費多長時間,並演示應用程序尚未凍結;它還可以為用戶提供中止操作的機會

繼承自 QDialog

3.5.2 功能作用

3.5.2.1 基礎

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)

qpd = QProgressDialog("進度條", "確定", 0, 100, w)  # 0 為進度條的最小值

# 自動選擇
qpd.setAutoClose(False)  # 設置對話框完成后是否關閉
qpd.setAutoReset(False)  # 進度條滿后是否重置信息

# 彈出:最小展示時長——展示之前的等待時間:如果在等待時間內,進度條滿了,就不會彈出;否則彈出
# qpd.setMinimumDuration(int)  # 默認為 4 秒
# 或者直接使用 open(func_) 彈出

w.show()
sys.exit(app.exec_())

3.5.2.2 界面內容編輯

# 對話框標題
setWindowTitle(str)

# 標簽文本
setLabelText(str)

# 取消按鈕文本
setCancelButtonText(str)

# 子控件設置
setBar(QProgressBar)
setCancelButton(QPushButton)
setLabel(QLabel)

3.5.2.3 數據處理

# 最大值和最小值
setMinimum(int)
setMaximum(int)
setRange(int min, int max)

# 設置當前的進度
setValue(int) 

# 是否取消
cancel()  # 取消進度條
wasCanceled()

3.5.3 信號

canceled()

3.6 QMessageBox

3.6.1 描述

用於通知用戶或請求用戶的提問和接收應答的一個模態窗口;無論其展示方式是什么,都為模態窗口

對話框的構成:

繼承自 QDialog

3.6.2 功能作用

3.6.2.1 構造函數

QMessageBox(parent: QWidget = None)
QMessageBox(QMessageBox.Icon, str, str, buttons:  Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.NoButton, parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.Dialog|Qt.MSWindowsFixedSizeDialogHint)  # str 可以為富文本

3.6.2.2 內容展示

# 對話框標題
setWindowTitle(str)

# 標准圖標
seticon(QMessageBox.Icon)  # 參數請到源碼查看

# 自定義圖標
setIconPixmap(QPixmap)  

# 主要標題
setText(str)  
setTextFormat(Qt.TextFormat)  # 設置文本的格式,富文本、普通文本或者自動識別

# 提示信息
setInformativeText(str)

# 詳細文本
setDetailedText(str)

# 復選框
setCheckBox(QCheckBox)

3.6.2.3 按鈕

添加移除按鈕

addButton(QabstractButton, QMessageBoxButtonRole)
addButton(str, QMessageBox.ButtonRole)
addButton(QMessageBox.StandardButton)
removeButton(QAbstractButton)

設置標准按鈕

setStandardButtons(Union[QMessageBox.StandardButtons, QMessageBox.StandardBox.StandardButton])

默認按鈕

setDefaultButton(QPushButton)
setDefaultButton(QMessageBox.StandardButton)

退出按鈕

setEscapeButton(QAbstractButton)
setEscapeButton(QMessageBox.StandardButton)
# 按 Esc 時激活按鈕

獲取按鈕

buttons()
button(QMessageBox.StandardButton)

按鈕角色

buttonRole(QAbstractButton)

被點擊的按鈕

clickedButton()

參數請到源碼查看

3.6.2.4 文本交互

setTextInteractionFlags(Qt.TextInteractionFlag)  
textInteractionFlags()

相關參數和上文的文本交互類似:【[點我](#3.1.2.2 文本交互)】,其僅僅控制主標題

3.6.2.5 靜態方法

# 關於表
about(QWidget, str, str)
# 關於 Qt 的對話框
aboutQt(QWidget, title)

# 危險按鈕
critical(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.Ok, defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton

# 展示相關信息
information(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.Ok, defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton

# 詢問按鈕
question(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No), defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton

# 警告按鈕
warning(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.Ok, defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton

靜態方法,快速展出對話框

3.6.3 信號

buttonClicked(QAbstractButton)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM