前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyQt 编程入门(四)

PyQt 编程入门(四)

作者头像
用户6021899
发布2019-08-14 17:42:05
8750
发布2019-08-14 17:42:05
举报

本例涉及到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_())

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档