前面所有的控件都是歸於輸入控件的,下面我們要總結下展示控件的用法。首先要將的就是最常用的QLabel。
一.描述
標簽控件(QLabel)提供了文本或圖像顯示的功能,可以用來顯示
普通文本
數字
富文本
圖片
動畫(GIF)
等等
但是他沒有提供用戶交互功能(但是有些時候的富文本里的超鏈接是可以點擊的)
QLabel是繼承子QFrame,可以對框架進行操作
二.功能作用
基礎的功能我們在前面已經使用過了,剩下的我們在了解一下:
1.對齊
QLabel.setAlignment(self, a0: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag])
QLabel.alignment() -> QtCore.Qt.Alignment

AlignLeft = ... # type: 'Qt.AlignmentFlag' AlignLeading = ... # type: 'Qt.AlignmentFlag' AlignRight = ... # type: 'Qt.AlignmentFlag' AlignTrailing = ... # type: 'Qt.AlignmentFlag' AlignHCenter = ... # type: 'Qt.AlignmentFlag' AlignJustify = ... # type: 'Qt.AlignmentFlag' AlignAbsolute = ... # type: 'Qt.AlignmentFlag' AlignHorizontal_Mask = ... # type: 'Qt.AlignmentFlag' AlignTop = ... # type: 'Qt.AlignmentFlag' AlignBottom = ... # type: 'Qt.AlignmentFlag' AlignVCenter = ... # type: 'Qt.AlignmentFlag' AlignVertical_Mask = ... # type: 'Qt.AlignmentFlag' AlignCenter = ... # type: 'Qt.AlignmentFlag' AlignBaseline = ... # type: 'Qt.AlignmentFlag'
2.縮進和邊距
QLabel.setIndent(self, a0: int) #縮進 QLabel.indent() -> int QLabel.setMargin(self, a0: int) #上左下右保留的間距 QLabel.margin() -> int
3.文本格式
QLabel默認設置的文本是富文本格式,在初始化里如果有富文本是直接按照富文本格式顯示的,如果我們想直接顯示純文本的話就要設置他本身的格式了。
QLabel.setTextFormat(self, a0: QtCore.Qt.TextFormat) PlainText = ... # type: 'Qt.TextFormat' RichText = ... # type: 'Qt.TextFormat' AutoText = ... # type: 'Qt.TextFormat'
4.小伙伴設置
在有些時候是這樣的效果
每個label對應一個QLineedit,注意label里是有快捷鍵對應的,這就是小伙伴設置的作用,在使用了快捷鍵可以完成文本框輸入的切換
QLabel.setBuddy(self, a0: QWidget)
上面的類似登錄的對話框的代碼如下

from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__init__() self.resize(800,600) self.UI_test() def UI_test(self): label_1 = QLabel('賬號&a',self) label_2 = QLabel('密碼&b',self) le1 = QLineEdit(self) le2 = QLineEdit(self) label_1.move(100,100) label_2.move(100,150) le1.move(150,100) le2.move(150,150) label_1.setBuddy(le1) label_2.setBuddy(le2) pass if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
5.內容縮放
有些時候標簽控件用來顯示圖片,但是圖片太小時候需要把圖片進行縮放(不改變label的尺寸)
QLabel.setScaledContents(self, a0: bool)
設置后圖片是按QLabel的尺寸縮放后顯示。
6.文本交互標志
QLabel.setTextInteractionFlags(self, flags: typing.Union[QtCore.Qt.TextInteractionFlags, QtCore.Qt.TextInteractionFlag]) type: 'Qt.TextInteractionFlag' NoTextInteraction = ... # 不能交互 TextSelectableByMouse = ... # 可以用鼠標選中 TextSelectableByKeyboard = ... # 可以用鍵盤選中 LinksAccessibleByMouse = ... # 可以用鼠標突出顯示和激活鏈接 LinksAccessibleByKeyboard = ... # 可以使用選項卡聚焦鏈接並用enter激活 TextEditable = ... # 可編輯 TextEditorInteraction = ... # 文本編輯器的默認值 TextBrowserInteraction = ... # QTextBrowser的默認值
這個其實是沒什么用的,因為如果需要進行文本交互了我們可以用QLineEdit之類的控件而沒必要用這個。
7.選中文本
直接通過代碼實現文本的選中效果
QLabel.setSelection(self, a0: int, a1: int)#a0為起始位置,a1為長度 QLabel.hasSelectedText()—>bool QLabel.selectedText()—>str QLabel.selectionStart()—>int
同上一條,用處不大。
8.外部鏈接
有些時候標簽上顯示的是超鏈接,但是只有設置了允許外部鏈接才可以打開對應的網頁
QLabel.setOpenExternalLinks(self, open: bool)
下面的方法就可以打開百度的網頁,否則鼠標指向鏈接時箭頭會變成手指,但點擊以后無法打開對應網頁
label = QLabel('<a href = www.baidu.com>百度</a>', self) label.setOpenExternalLinks(True)
9.換行
QLabel.setWordWrap(self, on: bool)
開啟換行后會在單詞結尾換行,這里插播一個用法:默認情況label里的字都是橫着排的,如果我們想讓字按豎着的方法顯示,自帶的方法是不行的,我們可以這樣做
label = QLabel('\n'.join('123456789'),self)
這樣出來的效果就是這樣的(忽略顏色和字體,為了顯示效果)
三.信號
由於一般情況都沒有交互的功能,QLabel控件的信號比較少,最常用的就是超鏈接的點擊
QLabel.linkHovered(self, link: str) #鼠標指向超鏈接 QLabel.linkActivated(self, link: str) #鼠標點擊超鏈接
信號傳遞參數為超鏈接的字符串。但是要注意一點:如果前面設置了允許打開外部鏈接,點擊超鏈接的信號是不會被觸發的(指向依舊被觸發)。
四.內容操作
不同的數據類型的設置方法是不同的,我們就不用再轉換了
#字符串 QLabel.setText() QLabel.text() #數字 QLabel.setNum() #圖形圖像 QLabel.setPicture(self, a0: QtGui.QPicture) QLabel.setPixmap(self, a0: QtGui.QPixmap) #動圖 QLabel.setMovie() #清空所有內容 QLabel.clear()

label = QLabel(self) pic = QPicture() painter = QPainter(pic) painter.setBrush(QBrush(QColor(255,255,255))) painter.drawEllipse(20,20,200,200) label.setPicture(pic)

label = QLabel(self) movie = QMovie(r'C:\Users\Aaron\Desktop\test\249093-2.gif') label.setMovie(movie) movie.start()
動圖里的QMovie還有幾個方法要講一下,作用直接看名字就知道了
QMovie.setScaledSize(self, size: QtCore.QSize) QMovie.setSpeed(self, percentSpeed: int)#播放速度 QMovie.setPaused(self, paused: bool) QMovie.stop() QMovie.start()