PyQt5 – 标签的双重边框

  • Post category:Python

PyQt5是一款Python的GUI编程工具包,它提供了丰富的组件和工具,可以轻松地实现复杂的图形用户界面。其中标签是常用的控件之一,在设计界面时可以为标签添加双重边框来提升UI的美观性和易读性,这篇文章将为大家介绍如何使用PyQt5实现标签的双重边框。

准备工作

首先,在使用PyQt5之前,需要确保已经正确安装了PyQt5和Python3,可以使用以下命令检查是否已经安装:

pip3 show PyQt5

如果已经安装,则会显示相应的版本信息;如果未安装,则需要先使用以下命令进行安装:

pip3 install pyqt5

实现双重边框

接下来,我们就可以开始实现标签的双重边框。首先,需要从PyQt5中导入QWidget、QLabel和QVBoxLayout等模块,使用以下代码实现:

from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt

然后,可以创建一个QWidget对象,并设置其背景颜色和布局,如下所示:

widget = QWidget()
widget.setStyleSheet("background-color: white;") # 设置背景颜色
layout = QVBoxLayout()
widget.setLayout(layout) # 设置布局

接下来,可以创建一个QLabel对象,并设置双重边框的样式和显示的文本,如下所示:

label = QLabel("My Label")
label.setStyleSheet("border: 2px solid black;"
                    "border-radius: 5px;"
                    "padding: 5px;"
                    "background-color: lightgray;"
                    "color: black;")

这里使用了CSS样式来设置标签的双重边框,属性包括:

  • border:表示边框样式,这里设置为2像素的黑色实线边框;
  • border-radius:表示圆角半径,这里设置为5像素;
  • padding:表示内边距,这里设置为5像素;
  • background-color:表示背景颜色,这里设置为浅灰色;
  • color:表示文本颜色,这里设置为黑色。

最后,可以将创建的标签添加到QWidget的布局中,如下所示:

layout.addWidget(label)

此时,就可以在PyQt5应用程序中看到一个有双重边框的标签控件了。

示例说明

以下是两个示例说明:

示例1

from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt

widget = QWidget()
widget.setStyleSheet("background-color: white;")
layout = QVBoxLayout()
widget.setLayout(layout)

label = QLabel("My Label")
label.setStyleSheet("border: 2px solid black;"
                    "border-radius: 5px;"
                    "padding: 5px;"
                    "background-color: lightgray;"
                    "color: black;")
layout.addWidget(label)

widget.show()

该示例中创建了一个QWidget对象和一个QLabel对象,并将标签添加到QWidget对象的布局中。标签的样式使用了CSS样式来定义,包括双重边框、圆角和内边距等属性。最后,将QWidget对象显示出来。

示例2

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt
import sys

app = QApplication(sys.argv)

widget = QWidget()
widget.setWindowTitle("My App")
widget.setGeometry(100, 100, 400, 300)
widget.setStyleSheet("background-color: white;")
layout = QVBoxLayout()
widget.setLayout(layout)

label1 = QLabel("Label 1")
label1.setStyleSheet("border: 2px solid black;"
                      "border-radius: 5px;"
                      "padding: 5px;"
                      "background-color: lightgray;"
                      "color: black;")
layout.addWidget(label1)

label2 = QLabel("Label 2")
label2.setStyleSheet("border: 1px dashed gray;"
                      "border-radius: 5px;"
                      "padding: 5px;"
                      "background-color: white;"
                      "color: black;")
layout.addWidget(label2)

widget.show()

sys.exit(app.exec_())

该示例中创建了一个QWidget对象、两个QLabel对象和一个QVBoxLayout对象,将标签添加到该布局中。其中,第一个标签使用了双重边框,第二个标签使用了虚线边框和白色背景。最后,将QWidget对象显示出来,并进入应用程序的消息循环中。