Говорю сразу, в pyqt5 щи лаптем хлебаю (как, впрочем, в программировании в целом)
У меня есть программа, в которой имеет место цикл по файлам. Есть окно, созданное в qt designer, содержащее две кнопки и текстовое поле. Я решил дополнить программу прогрессбаром. Мне удалось это сделать, добавив прогрессбар на окно. Далее, я захотел чтобы шкала появлялась только с началом цикла по файлам и решил создать ещё одно окно с прогрессбаром, которое появлялось бы в нужный момент
import sys import launchForm import progressbar from PyQt5 import QtWidgets class launch(QtWidgets.QMainWindow, launchForm.Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.pushButton.clicked.connect(self.fileDialog) self.pushButton_2.clicked.connect(self.convert) def fileDialog(self): directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Выбери папку') if directory: self.lineEdit.setText(directory) def convert(self): import os import win32com.client as win32 self.directory = self.lineEdit.text() os.chdir(self.directory) self.word = win32.Dispatch('Word.Application') maxBar = len(os.listdir(os.getcwd())) #global maxBar #self.bar = progressbar() #self.bar.show() i = 1 for file in os.listdir(os.getcwd()): if file.endswith('docx'): self.fn = os.path.join(os.getcwd(), file) self.wDoc = self.word.Documents.Open(self.fn) self.wDoc.SaveAs2(self.fn[0:-4] + 'doc', FileFormat = 0) self.wDoc.Close() i = i + 1 self.bar = progressbar() self.bar.show() progressbar().progressRun(maxBar, i) self.word.Quit() #def showBar(): #self.bar = progressbar() #self.bar.show() class progressbar(QtWidgets.QDialog, progressbar.Ui_Dialog): def __init__(self): super().__init__() self.setupUi(self) def progressRun(self, maxBar, i): self.progressBar.setMaximum(maxBar) self.progressBar.setValue(i) def ui(): app = QtWidgets.QApplication(sys.argv) window = launch() window.show() app.exec_() if __name__ == '__main__': ui()
Скажите, как было бы правильно организовать таковую задумку?
ИЛИ
Что было бы ещё лучше. Сделать так, чтобы прогрессбар находился на ТОМ ЖЕ САМОМ, но тем или иным образом был скрыт, и появлялся бы только когда это требуется