首先,需要了解一下 PyQt5 中的标签(QLabel)控件的属性:QLabel.setFrameShape() 和 QLabel.setFrameShadow()。其中,setFrameShape() 用于设置标签的边框的形状,而 setFrameShadow() 则用于设置阴影的显示方式。
接下来,我们就可以使用这两个属性来为标签的每一面设置不同的边框大小了。
下面是一个示例代码,其中包含两个标签,分别为 label1 和 label2,它们的上下边框大小不同:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('PyQt5 - 设置标签的边框大小')
# 创建两个标签
label1 = QLabel('上边框较宽', self)
label1.setGeometry(50, 50, 200, 30)
label1.setFrameShape(QLabel.Box)
label1.setFrameShadow(QLabel.Raised)
label1.setLineWidth(3)
label2 = QLabel('下边框较窄', self)
label2.setGeometry(50, 100, 200, 30)
label2.setFrameShape(QLabel.Box)
label2.setFrameShadow(QLabel.Sunken)
label2.setLineWidth(1)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在这个示例代码中,我们首先创建了两个标签 label1 和 label2。他们的 frame shape 都被设置为了 QLabel.Box,表示框的形状为矩形。frame shadow 则被设置为 QLabel.Raised 和 QLabel.Sunken,分别表示上升和下降的阴影。最后,我们使用 setLineWidth() 来设置标签的边框宽度。
运行这个程序,我们可以看到这两个标签的外观,label1 的上下边框比 label2 的宽很多。
除此之外,我们还可以应用 QSS 样式表来为标签设置边框。比如,下面这个示例代码中,我们使用了边框圆角和渐变颜色来使标签看起来更加精致:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('PyQt5 - 使用 QSS 样式表设置标签的边框大小')
# 创建一个标签
label = QLabel('使用 QSS 样式表设置标签的边框', self)
label.setGeometry(50, 50, 200, 100)
# 设置 QSS 样式表
label.setStyleSheet('''
QLabel {
border-radius: 10px;
border: 3px solid qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1,
stop: 0 #DDDDDD, stop: 1 #CCCCCC);
}''')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在这个示例代码中,我们使用了 setStyleSheet() 方法来设置标签的样式表。在样式表中,我们使用了 border-radius 属性来设置圆角的半径为 10px,使用了 border 属性来设置标签的边框为 3px 宽的渐变色。运行程序,我们可以看到这个标签的效果,边框精美而不突兀。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 为标签的每一面设置不同的边框大小 - Python技术站