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("<img src='./images/home.jpg' width=60 height=60>")
      # 通过html标签添加超链接
      setText("<a href='https://www.baidu.com'>百度一下</a>")
      
    • 数值数据
      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('<a href="https://www.baidu.com">百度一下</a>')
            # label2.setText('<a href="https://www.baidu.com">百度一下</a>')
            # label3.setText('<a href="https://www.baidu.com">百度一下</a>')
            #
            # 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('<a href="https://www.baidu.com">百度一下</a>')
            # label2.setText('<a href="https://www.baidu.com">百度一下</a>')
            # label3.setText('<a href="https://www.baidu.com">百度一下</a>')
            # label4.setText('<a href="https://www.baidu.com">百度一下</a>')
            # label5.setText('<a href="https://www.baidu.com">百度一下</a>')
            # label6.setText('<a href="https://www.baidu.com">百度一下</a>')
            # # 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('<a href="https://www.baidu.com">百度一下</a>')
            # label3.setText("<img src='../images/jpg/1.jpg'>")
            # 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('<a href="https://www.baidu.com">百度一下</a>')
            label2.setText('<a href="https://www.baidu.com">百度一下</a>')
    
            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_())
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout, QHBoxLayout from PyQt5.QtCore import Qt class QueueSystem(QWidget): def __init__(self): super().__init__() self.queue = [] # 存储队列信息 self.current_number = 0 # 当前的序号 self.initUI() def initUI(self): # 创建控件 self.label_title = QLabel('排队取号系统', self) self.label_number = QLabel('当前序号:{}'.format(self.current_number), self) self.label_queue = QLabel('等待人数:{}'.format(len(self.queue)), self) self.button_get_number = QPushButton('取号', self) self.button_reset = QPushButton('重置', self) # 设置控件样式 self.label_title.setAlignment(Qt.AlignCenter) self.label_title.setStyleSheet('font-size: 24px;') self.label_number.setStyleSheet('font-size: 18px;') self.label_queue.setStyleSheet('font-size: 18px;') self.button_get_number.setStyleSheet('font-size: 18px;') self.button_reset.setStyleSheet('font-size: 18px;') # 创建布局 vbox = QVBoxLayout() vbox.addWidget(self.label_title) vbox.addWidget(self.label_number) vbox.addWidget(self.label_queue) hbox = QHBoxLayout() hbox.addWidget(self.button_get_number) hbox.addWidget(self.button_reset) vbox.addLayout(hbox) self.setLayout(vbox) # 连接信号槽 self.button_get_number.clicked.connect(self.get_number) self.button_reset.clicked.connect(self.reset) # 设置窗口属性 self.setWindowTitle('排队取号系统') self.setGeometry(300, 300, 300, 200) self.show() def get_number(self): self.current_number += 1 self.queue.append(self.current_number) self.update_info() def reset(self): self.current_number = 0 self.queue = [] self.update_info() def update_info(self): self.label_number.setText('当前序号:{}'.format(self.current_number)) self.label_queue.setText('等待人数:{}'.format(len(self.queue))) def notify(self, number): if len(self.queue) > 0 and self.queue[0] == number: self.queue.pop(0) self.update_info() print('叫号:{}'.format(number)) if __name__ == '__main__': app = QApplication(sys.argv) queue_system = QueueSystem() sys.exit(app.exec_()) 优化该代码,使窗口最大化且不可以放大缩小,具备打印取号和记录当天取号记录功能
06-01
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout, QHBoxLayout, QPlainTextEdit, QSizePolicy from PyQt5.QtGui import QFont from PyQt5.QtCore import Qt class QueueSystem(QWidget): def __init__(self): super().__init__() self.queue = [] # 存储队列信息 self.current_number = 0 # 当前的序号 self.history = [] # 存储取号历史记录 self.initUI() def initUI(self): # 创建控件 self.label_title = QLabel('排队取号系统', self) self.label_number = QLabel('当前序号:{}'.format(self.current_number), self) self.label_queue = QLabel('等待人数:{}'.format(len(self.queue)), self) self.button_get_number = QPushButton('取号', self) self.button_reset = QPushButton('重置', self) self.button_print_history = QPushButton('打印取号记录', self) self.text_edit_history = QPlainTextEdit(self) self.text_edit_history.setStyleSheet('font-size: 14px;') self.text_edit_history.setReadOnly(True) self.text_edit_history.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) font = QFont() font.setFamily('Consolas') self.text_edit_history.setFont(font) # 设置控件样式 self.label_title.setAlignment(Qt.AlignCenter) self.label_title.setStyleSheet('font-size: 24px;') self.label_number.setStyleSheet('font-size: 18px;') self.label_queue.setStyleSheet('font-size: 18px;') self.button_get_number.setStyleSheet('font-size: 18px;') self.button_reset.setStyleSheet('font-size: 18px;') self.button_print_history.setStyleSheet('font-size: 18px;') # 创建布局 vbox = QVBoxLayout() vbox.addWidget(self.label_title) vbox.addWidget(self.label_number) vbox.addWidget(self.label_queue) hbox1 = QHBoxLayout() hbox1.addWidget(self.button_get_number) hbox1.addWidget(self.button_reset) hbox1.addWidget(self.button_print_history) vbox.addLayout(hbox1) vbox.addWidget(self.text_edit_history) self.setLayout(vbox) # 连接信号槽 self.button_get_number.clicked.connect(self.get_number) self.button_reset.clicked.connect(self.reset) self.button_print_history.clicked.connect(self.print_history) # 设置窗口属性 self.setWindowTitle('排队取号系统') self.setGeometry(300, 300, 300, 200) self.setFixedSize(600, 500) # 设置窗口大小固定 self.show() def get_number(self): self.current_number += 1 self.queue.append(self.current_number) self.history.append(self.current_number) # 记录取号历史记录 self.update_info() def reset(self): self.current_number = 0 self.queue = [] self.history = [] # 重置历史记录 self.update_info() self.text_edit_history.clear() def update_info(self): self.label_number.setText('当前序号:{}'.format(self.current_number)) self.label_queue.setText('等待人数:{}'.format(len(self.queue))) def notify(self, number): if len(self.queue) > 0 and self.queue[0] == number: self.queue.pop(0) self.update_info() print('叫号:{}'.format(number)) def print_history(self): history_str = '\n'.join([str(num) for num in self.history]) # 将历史记录转换为字符串 self.text_edit_history.setPlainText(history_str) if __name__ == '__main__': app = QApplication(sys.argv) queue_system = QueueSystem() sys.exit(app.exec_())

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失心疯_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值