GUI學習之三十一—QLabel學習總結


前面所有的控件都是歸於輸入控件的,下面我們要總結下展示控件的用法。首先要將的就是最常用的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()

 


免責聲明!

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



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