本例涉及到QWidget类样式表(StyleSheet)的应用和QFrame类边表框和样式的设置。QWidget类及其子类包含所有可显示的控件;QFrme子类包含QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget 和 QToolBox。本例仅以QLable作为例子讲解。 setStyleSheet方法可以设定背景色,前景色,还可以设置字体和鼠标悬停时的前景色。StyleSheet中的简单的颜色可以用'red','green','blue'等表示,复杂的颜色可以用RGB色,可以是三个参数,分别代表红(R),绿(G),蓝(B)三个分量的值(0~255的整数),也可以带第四个参数α,表征不透明度(0~255的整数)。 label.setStyleSheet("QLabel{background:rgb(250,0,50);}" "QLabel{color:rgb(50,250,100,100);font-size:15px;font-weight:bold;font-family:Roman times;}" "QLabel:hover{color:rgb(0,250,100,250);}") QFrme.setFrameShadow() 可设定控件的样式,参数有: QFrame.Plain#默认为平的, QFrame.Sunken #下陷, QFrame.Raised #凸起。 QFrme.setFrameShape() 可设定控件的形状,常见的参数有: QFrame.NoFrame#无边框 QFrame.Box#仅边框 QFrame.Panel#整个范围 还可以用setFrameStyle(QFrame.Panel|QFrame.Raised)这种形式同时设定上述两种参数。 在有边框的时,setLineWidth(n)可以设定边框的线宽。 程序的效果如下图: ![]() 代码如下: # _*_ coding:utf-8_*_ import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * class MyWidget(QWidget):#创建一个QWidget的 子类 def __init__(self,parent = None):#初始化函数 super().__init__(parent)#调用基类的初始化函数 self.initUI() def initUI(self): labels = list() glayout = QGridLayout() rows, cols = 3, 3 for i in range(rows): for j in range(cols): label = QLabel(u"Label%s"%(cols*i+j+1)) if i == 0: label.setFrameShadow(QFrame.Plain)#默认 label.setToolTip("QFrame.Plain")#设置鼠标悬停时的提示 elif i == 1: label.setFrameShadow(QFrame.Raised)#凸起 label.setToolTip("QFrame.Raised") else: label.setFrameShadow(QFrame.Sunken)#下陷 label.setToolTip("QFrame.Sunken") if j ==0: label.setFrameShape(QFrame.NoFrame)#默认无表框 #通过样式表设置背景色,前景颜色和字体, 以及鼠标悬停时的前景颜色 label.setStyleSheet("QLabel{background:rgb(250,0,50);}" "QLabel{color:rgb(50,250,100,100);font-size:15px;font-weight:bold;font-family:Roman times;}" "QLabel:hover{color:rgb(0,250,100,250);}") elif j ==1: label.setFrameShape(QFrame.Box)#仅边缘 label.setFixedWidth(80) elif j ==2: label.setFrameShape(QFrame.Panel)#整个范围 label.setFixedSize(100,40) #label.setFrameStyle(QFrame.Panel|QFrame.Raised) label.setLineWidth(3)#设置边框线宽 labels.append(label) glayout.addWidget(label,i,j,1,1) self.setLayout(glayout) self.setGeometry(500,300,600,400)# 设置坐标x, y 以及宽和高。.move() 和.resize() 的综合 self.setWindowTitle(u'颜色,Lable的样式')#设置self (MyWidget实例)的窗口标题 if __name__== '__main__': app= QApplication(sys.argv) widget= MyWidget() widget.show() #显示到屏幕 sys.exit(app.exec_()) ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Python编程 pyqt matplotlib,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |