2017-08-22 11 views
0

私はpyqt5で進行状況バーを作成しようとしていますが、プログレスバーのウィンドウを開くと空白のウィンドウが表示されます。空白を取得するプログレスバーウィンドウpyqt 5

UIから生成されたプログレスバーのコードされる:Ui_dlg_progressがUIから生成

をPyQt5インポートQtCore、QtGuiから、QtWidgets

class Ui_dlg_progress(object): 
    def setupUi(self, dlg_progress): 
     dlg_progress.setObjectName("dlg_progress") 
     dlg_progress.resize(376, 91) 
     dlg_progress.setSizeGripEnabled(True) 
     self.gridLayout = QtWidgets.QGridLayout(dlg_progress) 
     self.gridLayout.setObjectName("gridLayout") 
     self.label = QtWidgets.QLabel(dlg_progress) 
     self.label.setObjectName("label") 
     self.gridLayout.addWidget(self.label, 0, 0, 1, 1) 
     self.label_num_folders = QtWidgets.QLabel(dlg_progress) 
     self.label_num_folders.setObjectName("label_num_folders") 
     self.gridLayout.addWidget(self.label_num_folders, 0, 1, 1, 1) 
     self.label_text = QtWidgets.QLabel(dlg_progress) 
     self.label_text.setObjectName("label_text") 
     self.gridLayout.addWidget(self.label_text, 0, 2, 1, 1) 
     self.label_total_folders = QtWidgets.QLabel(dlg_progress) 
     self.label_total_folders.setObjectName("label_total_folders") 
     self.gridLayout.addWidget(self.label_total_folders, 0, 3, 1, 1) 
     self.progressBar = QtWidgets.QProgressBar(dlg_progress) 
     self.progressBar.setProperty("value", 0) 
     self.progressBar.setObjectName("progressBar") 
     self.gridLayout.addWidget(self.progressBar, 1, 0, 1, 4) 

     self.retranslateUi(dlg_progress) 
     QtCore.QMetaObject.connectSlotsByName(dlg_progress) 

    def retranslateUi(self, dlg_progress): 
     _translate = QtCore.QCoreApplication.translate 
     dlg_progress.setWindowTitle(_translate("dlg_progress", "Processing")) 
     self.label.setText(_translate("dlg_progress", "Processing:")) 
     self.label_num_folders.setText(_translate("dlg_progress", "0")) 
     self.label_text.setText(_translate("dlg_progress", "folders of a total of: ")) 
     self.label_total_folders.setText(_translate("dlg_progress", "1")) 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    dlg_progress = QtWidgets.QDialog() 
    ui = Ui_dlg_progress() 
    ui.setupUi(dlg_progress) 
    dlg_progress.show() 

ProgressBar.py - コールUi_dlg_progress

from PyQt5.QtCore import pyqtSlot 
from PyQt5.QtWidgets import QDialog 

from Ui_progress_bar import Ui_dlg_progress 


class dlg_progress(QDialog, Ui_dlg_progress): 
    """ 
    Class documentation goes here. 
    """ 
    def __init__(self, parent=None): 
     """ 
     Constructor 

     @param parent reference to the parent widget 
     @type QWidget 
     """ 
     super(dlg_progress, self).__init__(parent) 
     self.setupUi(self) 
     self.show() 

そして、プログレスバーと呼ばれるメインコード:そうでなければ、あなたはsource、生成の長さをテストする必要があります

for subdir in subdirs: 
    #Number of processed folders 

    proc_folders += 1 
    prog.progressBar.setValue(proc_folders) 
    prog.label_num_folders.setText(str(proc_folders))    
    QApplication.processEvents() 

def main(): 

    subdirs = [f for f in source.iterdir() if f.is_dir()] 
    if len(subdirs) == 0: 
     return -1 
    prog = dlg_progress() 
    #Actual number of folders procecessed 
    proc_folders = 0 
    prog.progressBar.setValue(proc_folders) 
    prog.label_num_folders.setText(str(proc_folders)) 
    prog.label_total_folders.setText(str(len(subdirs))) 
    prog.progressBar.maximum = len(subdirs) 
    for subdir in subdirs: 
     process of the folders 
     #Number of processed folders 

     proc_folders += 1 
     prog.setValue(proc_folders) 
     prog.label_num_folders.setText(str(proc_folders))    
     QApplication.processEvents() 
    return 0 

答えて

1

それはちょうど最後のループのタイプミスのように見えますリストが空であれば、ループは開始せず、プログレスバーは0のままです。

関連する問題