私はpyqtで私の非常に簡単なテストアプリケーションで作業するためにプログレスバーを作ろうとしていますが、残念ながら私が見たexamplesのいくつかを実装する方法彼らは私の頭の上に行くので、私の初心者の質問に耐えてください。初心者のためのPyQtプログレスバーを説明する簡単な方法
はのは、私は非常に単純な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()
どのように私はoutput_convert
で少なくともパルスするプログレスバーを実装することができますがあるとしましょうか? 実際に私を混乱させるのは、exampleのコードをどのように呼び出して実行するのかです。サブクラス化せずに純粋に関数で行うことができますか?それはoutput_convert
コードに依存していますか? TLDR:非常に長いコード(初心者向け)を実行しているときに、どのようにプログレスバーを実装できますか?私はそれが部分的にここで働いてしまった一日は、私のコード
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()
だ
UPDATE 1 後、私は今、私が欠けているものを見ると、私が本当に必要なのThreadingであることができます。私は周りを読んで、誰もがマルチスレッドが必要であると言って、サブクラス化は悪い考えです。処理中に進行状況バーがハングアップするため、部分的に機能します。
私は 'setstyle()'について気づいていませんでした。クロスプラットフォームアプリケーションを配布する予定だったので、ありがとうございました。これは実際に私がどのように非常に長いプロセスでそれを実装するかについての私の問題に答えるものではありません。理解しやすいソースがありますか? –