本文共计2656字,7张插图,预计阅读7分钟。
你好哇,我是木木同学。
本次分享的是:
在软件的底部有个状态栏位置,该位置可以显示一些信息文本,比如单元节点数量、时间、欢迎语等,效果如下:
具体如何添加呢,在 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
可根据自己喜好进行修改,其他的不需要更改直接复 制即可,更新的是系统时间。具体的解释:
self.label1
是一个带有文本 "欢迎关注公 众号:易木木响叮当" 的标签,并将其左对齐self.label2
是一个空的标签,并将其右对齐self.ui.statusbar.addWidget(self.label1)
将 label1
添加到状态栏中,并使其成为状态栏的一部分self.ui.statusbar.addPermanentWidget(self.label2)
将 label2
作为永久部件添加到状态栏中,意味着即使状态栏中有临时信息显示,label2
也会一直显示self.timer
是一个定时器对象,当定时器超时时,会触发 self.update_status_bar
方法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.0, 0.0, 0.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 是 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-
易木木响叮当
想陪你一起度过短暂且漫长的科研生活