首页/文章/ 详情

基于PYQT的工业软件界面制作保姆级教程 | 界面美化

3月前浏览2150
点击上方卡片关注公 众号
设为星标不错过每天的见面

本文共计2656字,7张插图,预计阅读7分钟。

你好哇,我是木木同学。

本次分享的是:

  • 定制底部状态栏
  • 在按钮上面添加图标
  • qss美化界面

添加状态栏

在软件的底部有个状态栏位置,该位置可以显示一些信息文本,比如单元节点数量、时间、欢迎语等,效果如下:

具体如何添加呢,在 qtdesigner 界面中类 QStatusBar 对应的对象名为 statusbar,用户可以按照自己喜好进行修改对象名字。signal. py文件中添加以下语句:

self.label1 = QLabel("欢迎关注公 众号:易木木响叮当", self)  
self.label2 = QLabel(self)  
self.label1.setAlignment(Qt.AlignLeft)  
self.label2.setAlignment(Qt.AlignRight)  
self.ui.statusbar.addWidget(self.label1)  
self.ui.statusbar.addPermanentWidget(self.label2)  
self.timer = QTimer(self)  
self.timer.timeout.connect(self.update_status_bar)  
self.timer.start()

---

def update_status_bar(self):  
    # 状态栏日期自动更新  
    datetime = QDateTime.currentDateTime()  
    text = datetime.toString("yyyy-MM-dd hh:mm:ss dddd")  
    self.label2.setText("当前日期时间:" + text)

self. label1 可根据自己喜好进行修改,其他的不需要更改直接复 制即可,更新的是系统时间。具体的解释:

  1. self.label1 是一个带有文本 "欢迎关注公 众号:易木木响叮当" 的标签,并将其左对齐
  2. self.label2 是一个空的标签,并将其右对齐
  3. self.ui.statusbar.addWidget(self.label1)label1 添加到状态栏中,并使其成为状态栏的一部分
  4. self.ui.statusbar.addPermanentWidget(self.label2)label2 作为永久部件添加到状态栏中,意味着即使状态栏中有临时信息显示,label2 也会一直显示
  5. self.timer 是一个定时器对象,当定时器超时时,会触发 self.update_status_bar 方法
  6. 该定时器将定期调用 self.update_status_bar 方法。你需要定义 update_status_bar 方法来执行具体的更新操作,比如更改 label2 的文本内容或其他状态栏信息,本次添加的是系统时间

图标

软件界面中如果添加一些图标,会使得整个界面变得更加“灵动”起来,接下来看看在 pyqt 中如何在按钮上添加图标文件吧!

根据以上步骤,在 qtdesigner 中添加图标文件,pycharm 编译时需要先将新建立的资源文件 image.qrc 进行编译,编译后会出现 image_rc.py 文件

在 qtdesigner 中选中按钮进行添加图标:最终在 pycharm 中还需要再次将 mainUI. ui 转化为 mianUI. py,此时注意在 mianUI. py 结尾处添加 import image.image_rc。运行后的效果:现在需要将按钮连接“槽函数”,也就是当鼠标点击按钮时,会触发某种特定功能。

self.ui.meshGenerator.clicked.connect(self.meshGenerator)  
self.ui.clearMesh.clicked.connect(self.clearMesh)
----
def meshGenerator(self):  
    fixPoints = np.array([  
        [0.00.00.0]  
    ])  
    with pygmsh.geo.Geometry() as geom:  
        geom.add_circle(  
            fixPoints[0],  
            radius=1.0,  
            mesh_size=0.2,  
        )  
        self.geom = geom  
        mesh = self.geom.generate_mesh()  
  
    meshio_mesh = meshio.Mesh(points=mesh.points, cells={"triangle": mesh.cells_dict['triangle']})  
    darg = dict(  
        show_edges=True,  
        line_width=1,  
        color='#a3c2c3',  
        style='surface',  # wireframe  
    )  
    self.plotter.add_mesh(meshio_mesh, **darg)  
  
def clearMesh(self):  
    self.plotter.clear()

以上代码的功能在 APP 中体现为:当鼠标点击第一个按钮时,绘图区会生成预定好的网格模型,当鼠标点击第二个按钮时,绘图区将被清除。效果如下

丰富图标可在阿里巴巴图标库(https://www. iconfont. cn/)中进行下载。

QSS 美化界面

qss 是 pyqt 常用的美化方法,可以自定义样式文件,不过比较复杂,我比较懒,就直接套用网上的模板文件,大家可以在网上搜索自己喜欢的样式,我用的样式:

import qdarkstyle  
from qdarkstyle.light.palette import LightPalette
---
# 加载QSS模板
mainWindow.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyqt5', palette=LightPalette()))
# 加载QSS自定义文件
qss = QSSLoader.read_qss_file("Style/Style.qss")  
mainWindow.setStyleSheet(qss)

本次的教学代码存放在知识星球中,感兴趣的小伙伴可在后台回复:星球,即可加入,对代码的任何疑问欢迎在星球中进行提问。

 

-End-

♡若喜欢这篇文章,欢迎带它去朋友圈逛♡

易木木响叮当

想陪你一起度过短暂且漫长的科研生活



来源:易木木响叮当
渲染
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:3月前
易木木响叮当
硕士 有限元爱好者
获赞 218粉丝 252文章 348课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈