本例涉及到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可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!