066.PyQt5_QLabel_标签控件

QLabel 标签控件

  • 描述
    • 提供了文本或图像的显示
      • 普通文本
      • 数字
      • 富文本
      • QLabel-超链接
      • 图片
      • QLabel-动画
    • 没有提供用户交互功能
  • 继承自:QFrame
  • 功能作用
  • 构造函数
    # 创建对象的同时设置父控件,设置窗口标志位
    QLabel(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
    # 创建对象的同时设置默认文本和父控件,设置窗口标志位
    QLabel(str, parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
    
  • 设置内容
    setText(str)                                # 设置标签文本内容
    setPixmap(QPixmap)                          # 通过QPixmap对象设置标签内容为图片
    
  • 对齐
    setAlignment(Qt.Alignment)                  # 设置控件内容对齐方式
    alignment() -> Qt.Alignment                 # 获取控件内容对齐方式
    # 参数:Qt.Alignment
    #       Qt.AlignTop                         # 垂直居上
    #       Qt.AlignBottom                      # 垂直居下
    #       Qt.AlignVCenter                     # 垂直居中
    #       Qt.AlignRight                       # 水平居右
    #       Qt.AlignLeft                        # 水平居左
    #       Qt.AlignCenter                      # 水平居中
    # 同时设置水平方向和垂直方向则通过按位或("|")连接即可
    
  • 缩进和边距
    setIndent(int)                              # 设置内容左右缩进,根据对齐方式确定左右
    indent() -> int                             # 获取内容左右缩进
    
    setMargin(int)                              # 设置控件内容区域与边框四周的边距
    margin() -> int                             # 获取控件内容区域与边框四周的边距
    
  • 文本格式
    setTextFormat(Qt.TextFormat)                # 设置文本内容显示格式
    textFormat()
    # 参数:Qt.TextFormat
    #       Qt.PlainText                        # 文本字符串被解释为纯文本字符串。
    #       Qt.RichText                         # 文本字符串被解释为富文本字符串。有关富文本的定义,请参阅支持的HTML子集。
    #       Qt.AutoText                         # 自动识别是否是富文本
    
  • 绑定小伙伴
    # 给标签控件绑定小伙伴之后,通过按下标签控件设置的快捷键,可以让其小伙伴获取到焦点
    setBuddy(QWidget buddy)                     # 给标签控件绑定一个小伙伴控件,标签控件的快捷键会作用在小伙伴身上
    buddy() -> QWidget                          # 获取标签控件的小伙伴
    
  • 内容缩放(针对于图片有效)
    setScaledContents(bool)                     # 设置是否缩放内容, 适应控件大小(仅针对于图片有效)
    hasScaledContents() -> bool                 # 获取是否设置缩放适应控件大小
    
    # 图片按照控件尺寸调整,图片会失去纵横比(导致图片变形)
    
  • 文本交互标志
    setTextInteractionFlags(Qt.TextInteractionFlags flags)      # 设置文本控件的交互标志
    textInteractionFlags() -> Qt.TextInteractionFlags           # 获取文本控件的交互标志
    # 参数:Qt.TextInteractionFlag
    #       Qt.NoTextInteraction                # 不可能与文本进行交互。
    #       Qt.TextSelectableByMouse            # 可以使用鼠标选择文本并使用上下文菜单(右键菜单)或标准键盘快捷键将其复制到剪贴板。
    #       Qt.TextSelectableByKeyboard         # 可以使用键盘上的光标键选择文本。显示文本光标。
    #       Qt.LinksAccessibleByMouse           # 可以使用鼠标突出显示链接(激活需要设置允许打开外部链接)
    #       Qt.LinksAccessibleByKeyboard        # 可以使用选项卡(Tab键)聚焦链接(使用enter激活需要设置允许打开外部链接)
    #       Qt.TextEditable                     # 该文字完全可编辑。需要同时设置可被选中才可以被编辑
    
    #       Qt.TextEditorInteraction            # 文本编辑器的默认值。
    #       等同于同时设置:TextSelectableByMouse | TextSelectableByKeyboard | TextEditable
    
    #       Qt.TextBrowserInteraction           # QTextBrowser的默认值。
    #       等同于同时设置:TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
    
  • 外部链接
    setOpenExternalLinks(bool open)                             # 是否允许打开外部链接(超链接)
    # 要打开超级链接还需要同时设置文本交互标志为 Qt.LinksAccessibleByMouse 或 Qt.LinksAccessibleByKeyboard
    # 当设置了文本交互标志位文字可编辑(setTextInteractionFlags(Qt.TextEditable))时,该设置将无效
    openExternalLinks() -> bool                                 # 获取是否设置可以打开外部链接
    
  • 选中文本
    setSelection(int start, int length)                         # 设置选中文本start开始索引,length指定选中几位
    hasSelectedText() -> bool                                   # 判断是否选中文本
    selectedText() -> str                                       # 获取选中的文本
    selectionStart() -> int                                     # 获取选中文本的起始索引号
    
  • 单词换行
    setWordWrap(bool on)                                        # 设置单个单词是否允许换行
    wordWrap() -> bool                                          # 获取单个单词是否允许换行
    
    # 通过'\n'.join(str)的方式可以将整个文本纵向排列
    
  • 内容操作
    • 文本字符串
      text() -> str                                           # 获取标签控件的文本内容
      setText(QString)                                        # 设置标签控件显示文本内容
      
      # 通过html标签添加图片
      setText("")
      # 通过html标签添加超链接
      setText("百度一下")
      
    • 数值数据
      setNum(int num)                                         # 设置int类型数据
      setNum(double num)                                      # 设置double类型数据
      
    • 图形图像
      setPicture(QPicture)                                    # 通过QPicture设置图形图像,会保持绘画属性
      picture() -> QPicture                                   # 获取图形图像,返回QPicture对象
      # QPicture对象需要先设置画家、画笔操作
      
      setPixmap(QPixmap)                                      # 通过QPixmap对象设置图形图像
      pixmap() -> QPixmap                                     # 获取图形图像,返回QPixmap对象
      
    • 动图/小电影
      setMovie(QMovie movie)                                  # 通过QMovie对象设置动画,此类用于显示没有声音的简单动画,不能放电影等
      movie() -> QMovie                                       # 获取动画,返回QMovie对象
      
      # QMovie对象常用操作
          setScaledSize(QSize)                                # 设置屏幕大小
          setPaused(bool) -> void                             # 设置是否暂停
          setSpeed(int percentSpeed)                          # 设置播放倍速(100为1倍速)
          # 例如:setSpeed(200)   设置播放速度为两倍速
          start()                                             # 开始播放,动图添加之后需要设置播放才能显示
          stop()                                              # 暂停播放
      
  • 清空
    clear()                                                     # 清空内容
    
  • 可用信号
    linkHovered(link_str)                                       # 鼠标放在超链接上时发射该信号,传递超链接url
    # 鼠标滑入会传递参数,滑出不会传递参数
    
    linkActivated(link_str)                                     # 超链接被激活时发射该信号,传递超链接url
    # 当设置了允许打开外部链接(setOpenExternalLinks(True))时,将不会发射该信号
    

  • 示例代码
  • 示例1:QLabel-功能作用及可用信号
    from PyQt5.Qt import *
    import sys
    
    class Windows(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('QLabel-功能作用')
            self.resize(500, 800)
            self.widget_list()
    
        def widget_list(self):
            self.add_widget()
    
    
        def add_widget(self):
            pass # 构造方法
            # label1 = QLabel(self)
            # label2 = QLabel('标签控件', self)
            #
            # label1.move(50, 50)
            # label1.setText('这是标签控件1')
            # label2.move(50, 100)
    
            pass # 对齐方式
            # label = QLabel('标签控件对齐方式', self)
            # label.resize(300, 300)
            # label.setStyleSheet('background-color: cyan;')
            # label.move(50, 50)
            # label.setAlignment(Qt.AlignTop)           # 垂直居上
            # label.setAlignment(Qt.AlignBottom)        # 垂直居下
            # label.setAlignment(Qt.AlignVCenter)       # 垂直居中
            # label.setAlignment(Qt.AlignRight)         # 水平居右
            # label.setAlignment(Qt.AlignLeft)          # 水平居左
            # label.setAlignment(Qt.AlignCenter)          # 水平居中
    
            pass    # 缩进和边距
            # 设置缩进
            # label1 = QLabel('label1缩进设置', self)
            # label1.move(50, 50)
            # label1.resize(200, 100)
            # label1.setStyleSheet('background-color: cyan;')
            # label1.setAlignment(Qt.AlignLeft)
            #
            # label1.setIndent(20)
    
            # 设置边距
            # label2 = QLabel('label2边距设置', self)
            # label2.move(50, 170)
            # label2.resize(200, 100)
            # label2.setStyleSheet('background-color: yellow;')
            # label2.setAlignment(Qt.AlignLeft)
            #
            # label2.setMargin(20)
    
            pass    # 设置文本格式
            # label1 = QLabel(self)
            # label2 = QLabel(self)
            # label3 = QLabel(self)
            #
            # label1.resize(400, 100)
            # label2.resize(400, 100)
            # label3.resize(400, 100)
            # label1.move(50, 50)
            # label2.move(50, 170)
            # label3.move(50, 290)
            #
            # label1.setStyleSheet('background-color: cyan;')
            # label2.setStyleSheet('background-color: yellow;')
            # label3.setStyleSheet('background-color: green;')
            #
            # label1.setText('百度一下')
            # label2.setText('百度一下')
            # label3.setText('百度一下')
            #
            # label1.setTextFormat(Qt.PlainText)          # 设置文本字符串被解释为纯文本字符串
            # label2.setTextFormat(Qt.RichText)           # 文本字符串被解释为富文本字符串
            # label3.setTextFormat(Qt.AutoText)           # 自动识别是否是富文本
    
            pass    # 绑定小伙伴
            # 创建QLabel对象的同时设置文本内容和快捷键字母(ALT+字母)
            # label1 = QLabel('账号(&U):', self)
            # label2 = QLabel('账号(&M):', self)
            # led1 = QLineEdit(self)
            # led2 = QLineEdit(self)
            #
            # label1.move(100, 100)
            # led1.move(180, 100)
            # label2.move(100, 150)
            # led2.move(180, 150)
            #
            # label1.setBuddy(led1)       # 为label1绑定小伙伴
            # label2.setBuddy(led2)       # 为label2绑定小伙伴
    
            pass    # 设置内容缩放(仅对图片有效)
            # label1 = QLabel(self)
            # label2 = QLabel(self)
            #
            # label1.resize(400, 200)
            # label2.resize(400, 200)
            #
            # label1.move(50, 50)
            # label2.move(50, 270)
            #
            # label1.setStyleSheet('background-color: cyan;')
            # label2.setStyleSheet('background-color: yellow;')
            #
            # label1.setPixmap(QPixmap('../images/jpg/1.jpg'))
            # label2.setPixmap(QPixmap('../images/jpg/1.jpg'))
            #
            # label2.setScaledContents(True)          # 设置开启图片根据控件大小自动缩放
    
            pass    # 文本交互标志(是否允许被选中/编辑)
            # label1 = QLabel(self)
            # label2 = QLabel(self)
            # label3 = QLabel(self)
            # label4 = QLabel(self)
            # label5 = QLabel(self)
            # label6 = QLabel(self)
            #
            # label1.resize(400, 50)
            # label2.resize(400, 50)
            # label3.resize(400, 50)
            # label4.resize(400, 50)
            # label5.resize(400, 50)
            # label6.resize(400, 50)
            #
            # label1.move(50, 50)
            # label2.move(50, 110)
            # label3.move(50, 170)
            # label4.move(50, 230)
            # label5.move(50, 290)
            # label6.move(50, 350)
            #
            # label1.setStyleSheet('background-color: cyan;')
            # label2.setStyleSheet('background-color: cyan;')
            # label3.setStyleSheet('background-color: cyan;')
            # label4.setStyleSheet('background-color: cyan;')
            # label5.setStyleSheet('background-color: cyan;')
            # label6.setStyleSheet('background-color: cyan;')
            #
            # label1.setText('百度一下')
            # label2.setText('百度一下')
            # label3.setText('百度一下')
            # label4.setText('百度一下')
            # label5.setText('百度一下')
            # label6.setText('百度一下')
            # # label6.setText('百度一下')
            #
            # label1.setTextInteractionFlags(Qt.NoTextInteraction)
            # label2.setTextInteractionFlags(Qt.TextSelectableByMouse)
            # label3.setTextInteractionFlags(Qt.TextSelectableByKeyboard)
            # label4.setTextInteractionFlags(Qt.LinksAccessibleByMouse)
            # label5.setTextInteractionFlags(Qt.LinksAccessibleByKeyboard)
            # label6.setTextInteractionFlags(Qt.TextEditable | Qt.TextSelectableByKeyboard)
            #
            # # 允许打开外部链接(需要同时设置允许被选中才有效)
            # label1.setOpenExternalLinks(True)
            # label2.setOpenExternalLinks(True)
            # label3.setOpenExternalLinks(True)
            # label4.setOpenExternalLinks(True)
            # label5.setOpenExternalLinks(True)
            # label6.setOpenExternalLinks(True)
    
            pass    # 设置选中文本(需要设置文本交互标志为可被选中状态)
            # label1 = QLabel('设置选中文本1', self)
            # label2 = QLabel('设置选中文本2', self)
            #
            # label1.resize(400, 50)
            # label2.resize(400, 50)
            #
            # label1.move(50, 50)
            # label2.move(50, 110)
            #
            # # label1.setTextInteractionFlags(Qt.TextSelectableByMouse)
            # label1.setTextInteractionFlags(Qt.TextSelectableByKeyboard)
            # label1.setSelection(1, 3)
            # label1.setFocus()
    
            pass    # 设置单词允许换行
            # lab1 = QLabel('设置单词允许换行'*5, self)
            # label2 = QLabel('asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf', self)
            #
            # lab1.resize(150, 50)
            # label2.resize(150, 50)
            #
            # lab1.move(50, 50)
            # label2.move(50, 110)
            #
            # lab1.setStyleSheet('background-color: cyan;')
            # label2.setStyleSheet('background-color: cyan;')
            #
            # lab1.setWordWrap(True)
    
            pass    # 内容操作
            # label1 = QLabel(self)
            # label2 = QLabel(self)
            # label3 = QLabel(self)
            # label4 = QLabel(self)
            # label5 = QLabel(self)
            # label6 = QLabel(self)
            # label7 = QLabel(self)
            # label8 = QLabel(self)
            #
            # label1.resize(400, 50)
            # label2.resize(400, 50)
            # label3.resize(400, 90)
            # label4.resize(400, 50)
            # label5.resize(400, 50)
            # label6.resize(400, 100)
            # label7.resize(400, 100)
            # label8.resize(400, 200)
            #
            # label1.move(50, 10)
            # label2.move(50, 70)
            # label3.move(50, 130)
            # label4.move(50, 230)
            # label5.move(50, 290)
            # label6.move(50, 350)
            # label7.move(50, 460)
            # label8.move(50, 580)
            #
            # label1.setStyleSheet('background-color: cyan;')
            # label2.setStyleSheet('background-color: cyan;')
            # label3.setStyleSheet('background-color: cyan;')
            # label4.setStyleSheet('background-color: cyan;')
            # label5.setStyleSheet('background-color: cyan;')
            # label6.setStyleSheet('background-color: cyan;')
            # label7.setStyleSheet('background-color: cyan;')
            # label8.setStyleSheet('background-color: cyan;')
            #
            # label1.setText('内容操作')
            # label2.setText('百度一下')
            # label3.setText("")
            # label4.setNum(888)
            # label5.setNum(999.999)
            #
            # label6.setPixmap(QPixmap("../images/jpg/1.jpg"))
            #
            # pic = QPicture()
            # painter = QPainter(pic)
            # painter.setBrush(QBrush(QColor(100,200,100)))
            # painter.drawEllipse(0,0,200,200)
            # label7.setPicture(pic)
            #
            # movie = QMovie("../images/gif/1.gif")
            # label8.setMovie(movie)
            #
            # movie.start()                   # 开始播放
            # movie.setSpeed(2000)            # 设置播放倍速
            # movie.setScaledSize(QSize(200,200))          # 设置屏幕大小
            # movie.setPaused(True)                         # 设置是否暂停
            # movie.stop()                                  # 暂停播放
    
            pass    # 清空内容
            # labe = QLabel('清空内容', self)
            # btn = QPushButton('清空', self)
            # labe.move(50, 50)
            # btn.move(50, 100)
            #
            # btn.clicked.connect(labe.clear)
    
            pass    # 可用信号
            label1 = QLabel(self)
            label2 = QLabel(self)
    
            label1.resize(400, 50)
            label2.resize(400, 50)
    
            label1.move(50, 50)
            label2.move(50, 110)
    
            label1.setStyleSheet('background-color: cyan;')
            label2.setStyleSheet('background-color: cyan;')
    
            label1.setText('百度一下')
            label2.setText('百度一下')
    
            label1.linkHovered.connect(lambda a:print('鼠标滑过了超链接', a))
            label2.linkActivated.connect(lambda a:print('超链接被点击了', a))
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Windows()
    
        window.show()
        sys.exit(app.exec_())

你可能感兴趣的:(PyQt5,pyqt5,python,gui,python,pyqt,qt)