放在狀態欄處的進度條。
本想放在主界面,可是沒找到相關代碼。html
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QProgressBar, QLabel, QApplication, QMainWindow from PyQt5.QtCore import QBasicTimer import sys class Ui_MainWindow(QMainWindow): def __init__(self,parent=None): super(Ui_MainWindow,self).__init__(parent) self.setupUi() #這裏能夠定義一些爲當前類所用的全局變量 self.filepath = '' def setupUi(self): #設置窗口對象名稱 self.setObjectName("MainWindow") #設置窗口大小 self.resize(800, 600) #定義按鈕 self.startButton = QtWidgets.QPushButton(self) # 設置按鈕對象名稱(不是按鈕顯示內容) self.startButton.setObjectName("pred") #設置按鈕位置 self.startButton.setGeometry(QtCore.QRect(10, 300, 93, 28)) #設置按鈕顯示內容 self.startButton.setText("開始") #爲按鈕綁定事件(點擊按鈕時就觸發) self.startButton.clicked.connect(self.predict) #這裏我綁定的是具體的業務處理函數,若是你想點擊按鈕就開始走進度條,則用下面這句 # 也能夠直接爲按鈕綁定事件,點擊按鈕時,就開始走進度條 # self.startButton.clicked.connect(self.onStart) #定義狀態欄 self.statusbar = QtWidgets.QStatusBar(self) # 將狀態欄設置爲當前窗口的狀態欄 self.setStatusBar(self.statusbar) # 設置狀態欄的對象名稱 self.statusbar.setObjectName("statusbar") #設置狀態欄樣式 self.statusbar.setStyleSheet('QStatusBar::item {border: none;}') # 定義文本標籤 self.statusLabel = QLabel() # 設置文本標籤顯示內容 self.statusLabel.setText(" 準備 ") #定義水平進度條 self.progressBar = QProgressBar() # 設置進度條的範圍,參數1爲最小值,參數2爲最大值(能夠調得更大,好比1000 self.progressBar.setRange(0, 100) # 設置進度條的初始值 self.progressBar.setValue(0) #設置定時器(走進度條的時候須要使用,不然進度條不會變化,而是固定不變 self.timer = QBasicTimer() self.step = 0 # 往狀態欄中添加組件(stretch應該是拉伸組件寬度) self.statusbar.addPermanentWidget(self.startButton, stretch=0) self.statusbar.addPermanentWidget(self.statusLabel, stretch=2) self.statusbar.addPermanentWidget(self.progressBar, stretch=10) #其餘界面設置 self.retranslateUi() QtCore.QMetaObject.connectSlotsByName(self) def retranslateUi(self): _translate = QtCore.QCoreApplication.translate #設置窗口標題 self.setWindowTitle(_translate("MainWindow", "testLoading")) # 每個QObject對象或其子對象都有一個QObject.timerEvent方法。 # 爲了響應定時器的超時事件,須要重寫進度條的timerEvent方法。 def timerEvent(self, event): if self.step >= 100: self.timer.stop() # 修改文本標籤顯示內容 self.statusLabel.setText(" 預測完成 ") # 啓用按鈕 self.startButton.setEnabled(True) # 修改按鈕顯示內容 self.startButton.setText("開始") return #累計步數 self.step = self.step + 1 #修改進度條的值 self.progressBar.setValue(self.step) def onStart(self): # 修改文本標籤顯示內容 self.statusLabel.setText(" 請稍後 ") #禁用按鈕 self.startButton.setEnabled(False) #修改按鈕顯示內容 self.startButton.setText("預測中...") #使用定時器的start()方法啓動定時器,激活進度條。其中: # 參數1:超時時間;參數2:到了超時時間後,接收定時器觸發超時事件的對象。 self.timer.start(100, self) #處理具體的業務邏輯,如調用深度學習模型進行預測。 def predict(self): self.onStart() ################用print模擬模型的調用#################### print('predict.......') if __name__ == '__main__': app = QApplication(sys.argv) ui = Ui_MainWindow() ui.show() sys.exit(app.exec_())
若是看不到效果圖,請前往此頁面查看https://blog.csdn.net/qq_42772612/article/details/115557955python
python3.x+pyqt5實現主窗口狀態欄裏(嵌入)顯示進度條python3.x
python中pyqt5的進度條--python實戰(十)工具