概述
1.pyqt5刷新页面代码:
QApplication.processEvents()
2.今天想做个加载动画,网上搜到的例子大概如下:
self.label = QLabel()
self.loading_gif = QMovie('loading.gif')
self.label.setMovie(self.loading_gif)
self.loading_gif.start()
代码很简单,对我而言,还缺一些东西,比如,加载完怎么处理,删除还是换成其它图片,我想要的效果比如我加载一个数据量比较大的csv,加载的时候我想展示加载动画,加载完,我想展示一个对勾动画,然后消失,这个怎么做。
3.子窗口的创建。pyqt中有三种窗口,mainwindow,dialog,widget,简单查了一下三者的关系,mainwindow和dialog都是继承widget的,mainwindow添加了一些通用的模块,比如菜单栏,工具栏,状态栏,这个是我们使用windows的大多数软件都有的,所以我们如果想要创建一个相对比较正式的项目,可以用mainwindow,dialog只是个对话框,我看了一下,界面比较简洁,默认没有最大最小化按钮,而是加了个帮助按钮,适合做提示框,所以我感觉不适合做子窗口,创建子窗口用widget比较好,虽然widget是父类,但是我看界面比dialog要正式,有最大最小化按钮。所以我选了widget做子窗口。顺便贴下代码:
from ctypes import alignment
import os
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QGridLayout,
QHBoxLayout, QVBoxLayout,QLabel, QComboBox,QPushButton,
QDateEdit, QSpacerItem,QFrame, QSizePolicy, QSplitter,
QRadioButton, QGroupBox,QCheckBox,QLineEdit, QAction,
QFileDialog,QListView,QListWidget,QListWidgetItem,
QProgressBar,QProgressDialog,QMessageBox,QAbstractItemView,QDialog)
from PyQt5.QtCore import Qt, QDate, QRect
from PyQt5 import QtCore
from PyQt5.QtGui import QIcon, QBitmap, QPainter, QPixmap, QCursor, QMovie
import random
from utils import *
from analysis_daily import AnalysisDaily
class DailyAnalysisDialog(QWidget):
def __init__(self,data):
super().__init__()
self.total_data = data
self.init_ui()
self.show()
def init_ui(self):
self.qssfile = "./style/style.qss"
self.qssstyle = read_qss(self.qssfile)
self.setStyleSheet(self.qssstyle)
self.setWindowTitle("每日分析")
self.resize(800,600)
wlayout = QVBoxLayout()
jihua_wlayout = QHBoxLayout()
self._jihua_layer(jihua_wlayout)
wlayout.addLayout(jihua_wlayout,0)
self.setLayout(wlayout)
def _jihua_layer(self,jihua_wlayout):
r = random.randint(20,230)
g = random.randint(20,230)
b = random.randint(20,230)
self.jihua_text = QLineEdit()
self.jihua_text.setStyleSheet("color:rgb(%d,%d,%d)" % (r,g,b))
self.jihua_text.setReadOnly(True)
self.jihua_text.setText("极化曲线")
self.jihua_button = QPushButton("选择极化曲线")
self.jihua_button.clicked.connect(self.select_jihua)
self.begin_button = QPushButton("开始分析")
self.begin_button.clicked.connect(self.begin_analysis)
jihua_wlayout.addWidget(self.jihua_text,0,Qt.AlignTop)
jihua_wlayout.addWidget(self.jihua_button,0,Qt.AlignTop)
jihua_wlayout.addWidget(self.begin_button,0,Qt.AlignTop)
#jihua_wlayout.setSpacing(20)
def select_jihua(self):
filename=QFileDialog.getOpenFileNames(self,'选择文件',os.getcwd(), "All Files(*);;eg Files(*.xlsx *.csv *.MDF)")
self.f_list = filename[0]
if self.f_list:
jihua_file = self.f_list[0]
print(jihua_file)
def begin_analysis(self):
a = AnalysisDaily(self.total_data)
a.on_off_count()
a.istka_stable_filter15(45)
print(a.need_data)
a.air_sig_statistics(45)
a.h2_sig_statistics(45)
a.hasub_statistics(45)
a.cvm_mean(45)
res_data = {}
for k,v in a.statistics_data.items():
for nk,nv in v.items():
res_data[nk] = nv
print(res_data)
df = pd.DataFrame(res_data,index=[0])
df = df.T
df.to_csv("res.csv")
if __name__ == "__main__":
app = QApplication(sys.argv)
ad = DailyAnalysisDialog([])
sys.exit(app.exec_())
最后
以上就是沉默秋天为你收集整理的pyqt5中防止主线程阻塞的全部内容,希望文章能够帮你解决pyqt5中防止主线程阻塞所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复