当前位置:网站首页>PyQt5快速开发与实战 8.6 设置样式
PyQt5快速开发与实战 8.6 设置样式
2022-07-30 12:44:00 【Ding Jiaxiong】
PyQt5快速开发与实战
文章目录
8. 第8章 PyQt5 图形和特效
8.6 设置样式
8.6.1 为标签添加背景图片
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout, QPushButton
import sys
class WindowDemo(QWidget):
def __init__(self):
super().__init__()
label1 = QLabel(self)
label1.setToolTip('这是一个文本标签')
label1.setStyleSheet("QLabel{border-image: url(./images/python.jpg);}")
label1.setFixedWidth(476)
label1.setFixedHeight(259)
vbox = QVBoxLayout()
vbox.addWidget(label1)
vbox.addStretch()
self.setLayout(vbox)
self.setWindowTitle("Label添加背景图片例子")
if __name__ == "__main__":
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = WindowDemo()
win.show()
sys.exit(app.exec_())

8.6.2 为按钮添加背景图片
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout, QPushButton
import sys
class WindowDemo(QWidget):
def __init__(self):
super().__init__()
btn1 = QPushButton(self)
btn1.setObjectName('btn1')
btn1.setMaximumSize(64, 64)
btn1.setMinimumSize(64, 64)
style = ''' #btn1{ border-radius: 30px; background-image: url('./images/left.png'); } #btn1:hover{ border-radius: 30px; background-image: url('./images/leftHover.png'); } #btn1:Pressed{ border-radius: 30px; background-image: url('./images/leftPressed.png'); } '''
btn1.setStyleSheet(style)
vbox = QVBoxLayout()
vbox.addStretch()
vbox.addWidget(btn1)
self.setLayout(vbox)
self.setWindowTitle("按钮添加背景图片例子")
if __name__ == "__main__":
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = WindowDemo()
win.show()
sys.exit(app.exec_())

8.6.3 缩放图片
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtCore import Qt
import sys
class WindowDemo(QWidget):
def __init__(self):
super().__init__()
filename = r".\images\Cloudy_72px.png"
img = QImage(filename)
label1 = QLabel(self)
label1.setFixedWidth(120)
label1.setFixedHeight(120)
result = img.scaled(label1.width(), label1.height(), Qt.IgnoreAspectRatio, Qt.SmoothTransformation);
label1.setPixmap(QPixmap.fromImage(result))
# 3
vbox = QVBoxLayout()
vbox.addWidget(label1)
self.setLayout(vbox)
self.setWindowTitle("图片大小缩放例子")
if __name__ == "__main__":
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = WindowDemo()
win.show()
sys.exit(app.exec_())

8.6.4 设置窗口透明
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QMainWindow()
win.setWindowTitle("窗口的透明度设置")
win.setWindowOpacity(0.5)
win.resize(350, 250)
win.show()
sys.exit(app.exec_())

8.6.5 加载QSS
在Qt中经常需要使用样式,为了降低耦合性(与逻辑代码分离),通常会定义一个QSS文件,然后编写各种控件(如 QLable、QLineEdit、QPushButton)的样式,最后使用QApplication或 QMainWindow来加载样式,这样就可以让整个应用程序共享同一种样式了。
编写QSS
MainWindow{ border: 1px solid rgb(45 ,45 ,45); } QToolTip{ border: 1px solid rgb(45 ,45 ,45); background: white; color: red; }加载QSS
编写一个加载样式的公共类CommonHelper
class CommonHelper : def __init__(self ) : pass @staticmethod def readQss( style): with open( style , 'r') as f: return f.read()主函数中加载
import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout, QPushButton from CommonHelper import CommonHelper class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.resize(477, 258) self.setWindowTitle("加载QSS文件") btn1 = QPushButton(self) btn1.setText('添加') btn1.setToolTip('测试提示') vbox = QVBoxLayout() vbox.addWidget(btn1) self.setLayout(vbox) if __name__ == "__main__": app = QApplication(sys.argv) win = MainWindow() styleFile = './style.qss' qssStyle = CommonHelper.readQss(styleFile) win.setStyleSheet(qssStyle) win.show() sys.exit(app.exec_())
边栏推荐
- 在 Scala 中读取整个文件
- 元宇宙的六大支撑技术
- CMake库搜索函数居然不搜索LD_LIBRARY_PATH
- 13-GuliMall 基础篇总结
- dolphinscheduler添加hana支持
- Analysis of AI recognition technology and application scenarios of TSINGSEE intelligent video analysis gateway
- 机器学习——特征选择
- Mysql索引结构
- 外包干了七年,废了。。。
- R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用dplyr包中的lag函数将时间序列数据向后移动一天(设置参数n为负值)
猜你喜欢

缓存一致性

大手笔!两所“双一流”大学,获75亿元重点支持!

Why is Prometheus a monitoring artifact sufficient to replace Zabbix?

结合实战,浅析GB/T28181(三)——实况点播

树形dp小总结(换根,基环树,杂七杂八的dp)

重建丢失的数据

【Kaggle:UW-Madison GI Tract Image Segmentation】肠胃分割比赛:赛后复盘+数据再理解

手慢无!阿里亿级流量高并发系统设计核心原理全彩笔记现实开源

奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)

漫谈金丝雀部署(Canary Deployment)
随机推荐
New:WebKitX ActiveX :::Crack
缓存一致性
什么是驱动程序签名,驱动程序如何获取数字签名?
What happened when the computer crashed?
Another blast!Ali's popular MySQL advanced collection is open source, reaching P7
Execution order of select, from, join, on where groupby, etc. in MySQL
Based on MySQL database, Redis cache, MQ message middleware, ES high availability scheme of search engine parsing
Unity Beginner 6 - Simple UI production (blood bar production) and audio addition and NPC dialogue bubbles (2d)
JS事件参数对象event
常见的云计算安全问题以及如何解决
Vivado安装后添加器件库
R语言筛选时间序列数据的子集(subset time series data)、使用window函数筛选连续日期时间范围内的数据(start参数和end参数分别指定起始和结束时间)
js 构造函数 return 非空对象,其实例化的对象在原型上的差异
C#实现软键盘的制作
EasyNVS cloud management platform function reconstruction: support for adding users, modifying information, etc.
I built another wheel: GrpcGateway
Homework 7.29 correlation function directory and file attributes related functions
shell的理解
结合实战,浅析GB/T28181(三)——实况点播
【Kaggle:UW-Madison GI Tract Image Segmentation】肠胃分割比赛:赛后复盘+数据再理解