3

Python ( tkinter GUI) で ttk.Progressbarを使用して、ボタンを押したときにプログレスバーを表示しようとしています。GUI の [Analyse] ボタンをクリックすると、スクリプト内の関数 analyze が呼び出されます。これは、3 段階のロケットのようなものを意図しています。

  1. grid()プログレスバー ウィジェットをメインフレームに追加し、start()します。

  2. 実際の計算を行います (私のテスト実行では約 3 秒かかります)

  3. ジョブが完了したので、プログレスバーを stop() し、grid_remove ()してユーザーから再び非表示にします。

ステップ3をコメントアウトすると、プログレスバーが表示され、期待どおりに開始され、ステップ2が実行されます。しかし、ステップ 3 が残っていると、そもそもプログレスバーが表示されません。さて、ステップ2の作業はどちらの方法でも実行されているので、同じ関数呼び出しでプログレスバーウィジェットのグリッド化と削除に関係している可能性があると想定していますが、これは私の最初の実際のGUIプロジェクトなのでPythonでは、それを回避する方法について少し途方に暮れています(それが実際に問題である場合)。これを回避する方法、または同じタスクをよりエレガントに達成する方法はありますか? ボタンが呼び出す関数は次のとおりです。

def analyze():
    # --Step 1--
    progressbar.grid()
    progressbar.start()

    # --Step 2--
    global analysis
    analysis = analyzer.Analysis(file_path.get())
    analysis.output_to_file()

    # --Step 3--
    progressbar.stop()
    progressbar.grid_remove()

さらに明確にするためにインターフェイスの写真を投稿しますが、現在の評判スコアでは画像の投稿が許可されていないため、説明 (およびコード) で問題が十分に明確になったことを願っています。

4

1 に答える 1