PyQt5 QLabel控件

PyQt5 QLabel控件

  • QLabel常用方法
    • 显示动画
    • 超链接
  • QLabel常用信号

QLabel 就是常见的标签,可以用来显示文字(包括纯文本和富文本),图片及动画。

QLabel常用方法

方法 描述
margin 保存 QLabel 控件中内容与边框之间的距离(边距),margin 的默认值为 0
setMargin() 修改QLabel 控件中内容与边框之间的距离(边距)
alignment() 获得QLabel 控件中内容的对齐方式,默认情况下,QLabel 控件中的内容保持左对齐和垂直居中
该属性的值可以通过调用 alignment() 方法获得,可以借助 setAlignment() 方法修改。
setAlignment 设置文本的对齐方式
Qt.AlignLeft:水平方向靠左对齐
Qt.AlignRight:水平方向靠右对齐
Qt.AlignCenter:水平方向居中对齐
Qt.AlignJustify:水平方向调整间距两端对齐
Qt.AlignTop:垂直方向靠上对齐
Qt.AlignBottom:垂直方向靠下对齐
Qt.AlignVCenter:垂直方向居中对齐
setIndent() 设置文本缩进值
setPixmap() setPixmap()
text() 获得 Qlabel 的文本内容
setText() 设置 Qlabel 的文本内容
selectedText() 返回所选择的字符
setBuddy() 设置 QLabel的buddy(伙伴),及使用 Qlabel 设置快捷键,会在快捷键后将焦点设置到其 buddy 上,这里用到了 Qlabel 的交互控件功能,其 Qlabel 必须是文本内容,并且使用 “&” 符号快捷键
setWordWrap() 设置是否允许换行
hide() 隐藏文本框
clear() 清空 QLabel 控件内所有显示的内容
setToolTip(QString) 设置信息提示,当用户的鼠标放在QLabel 文本框上时会自动跳出文字
setToolTipDuration(int) 设置提示信息出现的时间,单位是毫秒
setStyleSheet(QString) 设置 QLabel 文本框的样式
setGeometry(int x, int y, int w, int h) 设置 QLabel 文本框的位置 (x, y) 以及尺寸 (w, h)
import sys
from PyQt5.QtWidgets import *
from PyQt5.Qt import *
from PyQt5.QtGui import QFont


class Set_qlabel(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.setGeometry(500, 500, 500, 500)
        label1 = QLabel("姓名:", self)
        label1.setGeometry(50, 50, 200, 50)
        font1 = QFont("隶书", pointSize=20)
        label1.setFont(font1)
        label1.setAlignment(Qt.AlignVCenter | Qt.AlignRight)

        label2 = QLabel("班级:", self)
        label2.setGeometry(50, 200, 200, 50)
        font2 = QFont("楷体", pointSize=12)
        label2.setFont(font2)
        label2.setStyleSheet("color:red")
        label2.setMargin(15)

        print(label2.margin(), label2.alignment(), label2.indent(), label2.text())
        #label2.setStyleSheet("color:#ff6600;")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = Set_qlabel()
    widget.show()
    sys.exit(app.exec_())

PyQt5 QLabel控件_第1张图片

import sys
from PyQt5.Qt import *


class QlabelClass(QWidget):
    def __init__(self):
        super().__init__()
        
        self.lb1 = QLabel('学点python不难!', self)
        self.lb2 = QLabel('我内容不换行', self)
        self.lb3 = QLabel('我内容会自动换行', self)
        self.lb3.setWordWrap(True)

        self.bt1 = QPushButton('输入内容1', self)
        self.bt2 = QPushButton('输入内容2', self)

        layout1 = QVBoxLayout()
        layout1.addWidget(self.lb1)
        layout1.addWidget(self.lb2)
        layout1.addWidget(self.lb3)
        layout1.addWidget(self.bt1)
        layout1.addWidget(self.bt2)

        self.bg1 = QButtonGroup(self)
        self.ra1 = QRadioButton('左边', self)
        self.ra2 = QRadioButton('中间', self)
        self.ra3 = QRadioButton('右边', self)

        self.bg1.addButton(self.ra1, 1)
        self.bg1.addButton(self.ra2, 2)
        self.bg1.addButton(self.ra3, 3)

        layout2 = QHBoxLayout()
        layout2.addWidget(self.ra1)
        layout2.addWidget(self.ra2)
        layout2.addWidget(self.ra3)

        layout3 = QVBoxLayout()
        layout3.addLayout(layout1)
        layout3.addLayout(layout2)
        self.setLayout(layout3)

        self.bg1.buttonClicked.connect(self.rb_clicked)
        self.bt1.clicked.connect(self.show_dialog)
        self.bt2.clicked.connect(self.show_dialog)

    def rb_clicked(self):
        if self.bg1.checkedId() == 1:
            self.lb1.setAlignment(Qt.AlignVCenter | Qt.AlignLeft)
        elif self.bg1.checkedId() == 2:
            self.lb1.setAlignment(Qt.AlignCenter)
        elif self.bg1.checkedId() == 3:
            self.lb1.setAlignment(Qt.AlignVCenter | Qt.AlignRight)

    def show_dialog(self):
        sender = self.sender()
        if sender == self.bt1:
            text, ok = QInputDialog.getText(self, '内容1', '请输入内容1:')
            if ok:
                self.lb2.setText(text)
        elif sender == self.bt2:
            text, ok = QInputDialog.getText(self, '内容2', '请输入内容2:')
            if ok:
                self.lb3.setText(str(text))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QlabelClass()
    widget.setGeometry(100, 100, 100, 100)
    widget.show()
    sys.exit(app.exec_())

PyQt5 QLabel控件_第2张图片

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


class QlabelClass(QWidget):
    def __init__(self):
        super().__init__()
        pix = QPixmap('dog.png')
        lb1 = QLabel(self)
        lb1.setGeometry(0, 0, 700, 300)
        lb1.setPixmap(pix)
        lb1.setStyleSheet("border: 2px solid red")

        lb2 = QLabel(self)
        lb2.setGeometry(0, 300, 300, 300)
        lb2.setPixmap(pix)
        lb2.setStyleSheet("border: 2px solid red")
        lb2.setScaledContents(True)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QlabelClass()
    widget.setGeometry(100, 100, 700, 600)
    widget.show()
    sys.exit(app.exec_())

PyQt5 QLabel控件_第3张图片

显示动画

  • movie = QMovie(“th.gif”) 创建QMovie对象。
  • self.lb.setMovie(movie),要在Qlabel显示电影,将QMovie对象传递给QLabel.setMovie()
  • movie.start() 开始播放
  • movie.stop() 停止播放
  • setPaused() 暂停播放

超链接

  • setOpenExternalLinks(True):打开超链接
  • setText(“感谢关注菜鸟教程”) 网址填写方法
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


class QlabelClass(QWidget):
    def __init__(self):
        super().__init__()
        self.lb = QLabel(self)
        self.lb.setGeometry(50, 50, 300, 200)
        self.bt1 = QPushButton('开始', self)
        self.bt1.setGeometry(0, 0, 100, 30)
        self.bt2 = QPushButton('停止', self)
        self.bt2.setGeometry(300, 0, 100, 30)
        self.lb2 = QLabel(self)
        self.lb2.setText("感谢关注菜鸟教程")
        vbox = QVBoxLayout()
        vbox.addWidget(self.lb)
        vbox.addWidget(self.bt1)
        vbox.addWidget(self.bt2)
        vbox.addWidget(self.lb2)
        self.setLayout(vbox)
        # 显示的开始什么
        self.pix = QPixmap('th.gif')
        self.lb.setPixmap(self.pix)
        self.lb.setScaledContents(True)
        self.bt1.clicked.connect(self.run)
        self.bt2.clicked.connect(self.run)
        self.lb2.linkActivated.connect(self.link_clicked)
        self.lb2.linkHovered.connect(self.link_hovered)
        self.lb2.setOpenExternalLinks(True)

    def link_clicked(self):
        print("点击了超链接")

    def link_hovered(self):
        self.lb2.setToolTip("鼠标滑过")

    def run(self):
        movie = QMovie("th.gif")
        self.lb.setMovie(movie)
        if self.sender() == self.bt1:
            movie.start()
        else:
            movie.stop()
            self.lb.setPixmap(self.pix)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QlabelClass()
    widget.setGeometry(100, 100, 400, 400)
    widget.show()
    sys.exit(app.exec_())

PyQt5 QLabel控件_第4张图片

QLabel常用信号

  • linkHovered(): 当鼠标滑过Qlabel时触发。
  • linkActivated(): 当鼠标点击Qlabel时触发。

你可能感兴趣的:(PyQt5,qt,开发语言)