目录
(1)定时器每100ms运行一次,触发函数 load_progress_bar。
(2)load_progress_bar 进度条自动加1,直到100%。
一、效果展示
二、使用Designer设计UI
1、添加背景Frame
添加Frame,并设置样式。设置样式示例:
QFrame { background-color: rgb(56, 58, 89);
color: rgb(220, 220, 220);
border-radius: 10px;
}
2、添加文本框Text Edit
3、添加进度条Progress
UI界面到此基本Ok。
三、编写py代码实现
1、将ui编译成py文件
命令有2种:PyQt和PySide,分别如下:
# PyQt 安装命令
pip install pyqt5 pyqt5-tools
# 编译qrc文件的命令
pyrcc5 resource.qrc -o resource.py
# 编译ui文件的命令
pyuic5 main_window.ui -o main_window.py
# PySide 安装命令
pip install pyside6
# 编译qrc文件的命令
pyside6-rcc src.qrc -o dst.py
# 编译ui文件的命令
pyside6-uic src.ui -o dst.py
这里介绍下二者区别:
PyQt(由 Riverbank Computing 开发维护)是GPLv3协议,使用该代码的程序要开源,如果闭源商用就会违反协议。PyQt历史更长一些,比较稳定,开发社区也比较大,相关的资料都非常成熟。
PySide(又名Qt for Python)是Qt公司的亲儿子,是LGPL协议,免费商用。后起之秀,是Nokia和Riverbank Computing谈免费商用协议LGPL失败后自己开发出来的。
2、设置定时器QTimer
(1)定时器每100ms运行一次,触发函数 load_progress_bar。
def set_loader(self):
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.load_progress_bar)
self.timer.start(100)
(2)load_progress_bar 进度条自动加1,直到100%。
def load_progress_bar(self):
self.progressBar.setValue(self.progressBar.value() + 1)
self.label_title.setStyleSheet(f"color: rgb(254, {self.cont_label_title[0]}, 199);")
self.label_description.setStyleSheet(f"color: rgb(98, {self.cont_label_title[1]}, 164);")
self.cont_label_title[0] += 1
self.cont_label_title[1] += 1
if self.progressBar.value() >= 100:
self.window.close()
self.open_table_main()
self.timer.stop()
(3)进度条100%后,跳转到下一个窗口
def open_table_main(self):
self.MainWindow = QtWidgets.QMainWindow()
self.ui = Ui_MainWindow()
self.ui.setupUi(self.MainWindow)
self.MainWindow.show()
至此,代码基本完成。