pyqt程序中使用了进度条,但是进度条并不是平滑的增加的!
class MyThread_Follow(QThread): # 建立一个任务线程类
"""
处理跟卖链接的多线程
无参数,直接调用外部函数
返回值:当处理代码无异常时,发射一个True信号,否则发送False信号
"""
signal = pyqtSignal(bool) # 设置触发信号传递的参数数据类型,这里是字符串
progressBar_signal = pyqtSignal(int)
def __init__(self):
super(MyThread_Follow, self).__init__()
def run(self):
try:
listing_list = get_path(".\\数据\\Listing表\\")
store_list = get_path(".\\数据\\管理库存表\\")
age_list = get_path(".\\数据\\库龄表\\")
status_list = get_path(".\\数据\\销售状态表\\")
band_list = get_path(".\\数据\\匹配捆绑表\\")
self.progressBar_signal.emit(10)
bind = load_bind(band_list[0])
self.progressBar_signal.emit(20)
status = load_status(status_list[0])
self.progressBar_signal.emit(30)
convert_func(listing_list)
all_listings = load_all_listing(listing_list)
self.progressBar_signal.emit(50)
convert_func(store_list)
all_stores = load_all_store(store_list)
self.progressBar_signal.emit(80)
all_ages = load_all_age(age_list)
self.progressBar_signal.emit(90)
result = deal_data(all_listings, all_ages, all_stores, status, bind)
self.progressBar_signal.emit(95)
save_data(result)
self.progressBar_signal.emit(100)
self.signal.emit(True)
except:
logging.error("----------文件读取错误,请核对数据!---------", exc_info=True)
self.signal.emit(False)
我这里的思路是直接自定义信号,然后返回给进度条组件,导致的问题是当处理数据很费时时,进度条停止了,完成后又突然增加一大截。
我希望的效果是根据处理的时间均匀的分配进度条进度。
pyqt5 在arm linux 安装,有没有建议,谢谢。
如果你有上万个任务要处理,那当然可以每处理完一个,就让进度条增加0.01%
问题是如果你一共只有5个任务,那每处理完一个增加20%就是不可避免的了
除非你进行任务之前就能够知道任务大概多长时间能完,然后用个timer做个假进度
否则,如果任务时间不确定,你怎么知道什么时候该增加进度了呢