pyqt QLabel详细用法

QLabel控件类的主要API如下:

setAlignment():设置文本的对齐方式

setIndent():设置文本缩进

text():获取文本内容

setText():设置文本内容

selectedText():返回所选择的字符

setBuddy():设置伙伴关系

setWordWrap():设置是否允许换行

QLabel常用的信号(事件):

1. 当鼠标滑过QLabel控件时触发:linkHovered

2. 当鼠标单击QLabel控件时触发:linkActivated

一  QLabel显示文本,图片

例如,下面的demo

pyqt QLabel详细用法

       Qt的控件支持html语法,可以用html代码控制显示效果。

       第一个label只显示字体,但是通过调色板QPalette改变了背景颜色,第二个label是一个空的超链接,第三个QLabel显示图片,第四个是超链接,可以直接打开网址,调到百度。

       代码如下:

import sys
from PyQt5.QtWidgets import QVBoxLayout,QMainWindow,QApplication,QLabel,QWidget
from PyQt5.QtGui import QPixmap, QPalette
from PyQt5.QtCore import Qt

class QLabelDemo(QWidget) :
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        label1 = QLabel(self)
        label2 = QLabel(self)
        label3 = QLabel(self)
        label4 = QLabel(self)

        label1.setText("<font color=yellow>这是一个文本标签.</font>")
        label1.setAutoFillBackground(True)
        palette = QPalette()
        palette.setColor(QPalette.Window,Qt.black)  # 设置背景色
        label1.setPalette(palette)
        label1.setAlignment(Qt.AlignCenter)

        label2.setText("<a href='#'>label2</a>")

        label3.setAlignment(Qt.AlignCenter)
        label3.setToolTip('这是一个图片标签')
        label3.setPixmap(QPixmap("1.png"))

        # 如果设为True,用浏览器打开网页,如果设为False,调用槽函数
        label4.setOpenExternalLinks(True)
        label4.setText("<a href='https://www.baidu.com'>跳转到百度</a>")
        label4.setAlignment(Qt.AlignCenter)
        label4.setToolTip('这是一个超级链接')

        vbox = QVBoxLayout()

        vbox.addWidget(label1)
        vbox.addWidget(label2)
        vbox.addWidget(label3)
        vbox.addWidget(label4)

        label2.linkHovered.connect(self.linkHovered)
        label4.linkActivated.connect(self.linkClicked)

        self.setLayout(vbox)
        self.setWindowTitle('QLabel用法')

    def linkHovered(self):
        print('当鼠标滑过label2标签时,触发事件')

    def linkClicked(self):
        print('当鼠标单击label4标签时,触发事件')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QLabelDemo()
    main.show()
    sys.exit(app.exec_())

          label2和label4分别实现了鼠标滑过,点击QLabel的信号。

二  QLabel设置伙伴控件

       例如下面的Demo, 用alt + N设置nameEdit的光标,alt + p设置password的光标,这种叫伙伴关系。

pyqt QLabel详细用法

      代码如下:

from PyQt5.QtWidgets import *
import sys

class QLabelBuddy(QDialog) :
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('QLabel设置伙伴控件')
        self.setFixedWidth(250)

        nameLabel = QLabel('&Name',self)
        nameLineEdit = QLineEdit(self)
        # 设置伙伴控件
        nameLabel.setBuddy(nameLineEdit)

        passwordLabel = QLabel('&Password',self)
        passwordLineEdit = QLineEdit(self)
        # 设置伙伴控件
        passwordLabel.setBuddy(passwordLineEdit)

        btnOK = QPushButton('&OK')
        btnCancel = QPushButton('&Cancel')

        mainLayout = QGridLayout(self)
        mainLayout.addWidget(nameLabel,0,0)
        mainLayout.addWidget(nameLineEdit,0,1,1,2)

        mainLayout.addWidget(passwordLabel,1,0)
        mainLayout.addWidget(passwordLineEdit,1,1,1,2)

        mainLayout.addWidget(btnOK,2,1)
        mainLayout.addWidget(btnCancel,2,2)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QLabelBuddy()
    main.show()
    sys.exit(app.exec_())

        代码中用serBuddy把QLabel和QLineEdit设置为伙伴控件关系,并用快捷键可以设置光标,当然伙伴关系还有其它用法。

上一篇:PyQt信号槽用法详解介绍与代码演示


下一篇:java构造器