J'essaie de faire une barre de progression pour travailler sur mon application de test très simple en pyqt mais malheureusement je n'ai aucune idée sur la façon de mettre en œuvre certains des examples que j'ai vu comme ils vont sur ma tête alors s'il vous plaît supporter avec ma question de débutant.Une façon simpliste d'expliquer la barre de progression PyQt pour les débutants
Disons que j'ai un très simple QMainWindow
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(750, 450, 400, 200)
self.setFixedSize(self.size())
btn1 = QtGui.QPushButton("Convert", self)
btn1.move(210,171)
btn1.clicked.connect(self.output_convert)
def output_convert(self):
#very long process to convert a txt file to excel
#Here is where I would like to implement a progress bar
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
app.exec_()
run()
Comment puis-je mettre en œuvre au moins une barre de progression pulser dans le output_convert
? Ce qui me dérange vraiment, c'est comment puis-je appeler/exécuter les codes dans le example. Puis-je le faire sans sous-classe et purement dans une fonction? cela dépend-il du code output_convert
? TLDR: Comment puis-je implémenter une barre de progression lors de l'exécution d'un code très long (newbie friendly)?
MISE À JOUR 1 Après une journée entière, je l'ai eu de travail est en partie ici mon code
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(750, 450, 400, 200)
self.setFixedSize(self.size())
btn1 = QtGui.QPushButton("Convert", self)
btn1.move(210,171)
btn1.clicked.connect(self.progbar)
def progbar (self):
self.prog_win = QDialog()
self.prog_win.resize(400, 100)
self.prog_win.setFixedSize(self.prog_win.size())
self.prog_win.setWindowTitle("Processing request")
self.lbl = QLabel(self.prog_win)
self.lbl.setText("Please Wait. . .")
self.lbl.move(15,18)
self.progressBar = QtGui.QProgressBar(self.prog_win)
self.progressBar.resize(410, 25)
self.progressBar.move(15, 40)
self.progressBar.setRange(0,1)
self.myLongTask = TaskThread()
#I think this is where I am wrong
self.prog_win.show()
self.myLongTask.taskFinished.connect(self.onStart)
self.output_settings()
def onStart(self):
self.progressBar.setRange(0,0)
self.myLongTask.start()
def output_convert(self):
#very long process to convert a txt file to excel
class TaskThread(QtCore.QThread):
taskFinished = QtCore.pyqtSignal()
def run(self):
time.sleep(3)
self.taskFinished.emit()
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
app.exec_()
run()
Je peux maintenant voir ce que je manque et ce que je vraiment besoin est Threading. J'ai lu autour et tout le monde a dit qu'il a besoin de multithread et sous-classement est une mauvaise idée. Il fonctionne partiellement lorsque la barre de progression se bloque pendant le traitement.
Je n'étais pas au courant de 'setstyle()' merci car je prévoyais de distribuer une application multiplateforme. Bien que cela ne réponde pas vraiment à mon problème sur la façon dont je l'implémenterais dans un très long processus. avez-vous des sources faciles à comprendre? –