質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3292閲覧

Python: TkInter プログレスバーの進行を データの出力の進行具合に使いたい

saya24

総合スコア222

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/29 08:46

編集2020/06/29 09:10

以下のコードは JSONデータ(変数)をブックに出力するためのコードです。
TkInterのプログレスバーを 上記で言及しているデータ行が出力される都度 進行させることを達成したいです。 

ネット上に紹介されたプログレスバーの記事は
スタートボタンを押して進行を開始して、別のストップボタンが押されるまで進行を維持する例をよくみかけるのですが
自分が今回達成したい 課題に どう置き換えればよいか 考え方が分かりません。

尚、現況以下のとおりですが、全くプログレスバーの進行が現れません。
update()みたいな ことが必要なのでしょうか??

Python

1prbar_int = math.ceil(100 / len(output_data)) 2 3# 値書き込み 4for row, dic in enumerate(output_data): 5 for i, keyname in enumerate(header): 6 if keyname in dic.keys(): 7 8 # 辞書の値をエクセルに書き込む 9 newws.cell(row=row+2, column=i+1).value = dic[keyname] 10 11 self.prbar1.start(interval=prbar_int) #★★★行単位に進行??★★★ 12 13# ブックを保存 14newwb.save(fname) 15self.prbar1.stop() #★★★行単位に進行??★★★

よろしくお願いします。

20200629 1809追記(自己解決)

python

1self.prbar1["maximum"] = len(output_data) 2 3# 値書き込み 4for row, dic in enumerate(output_data): 5 for i, keyname in enumerate(header): 6 if keyname in dic.keys(): 7 8 # 書式設定を文字列に 9 #if keyname in strcolumns: 10 #newws.cell(row=row+2, column=i+1).number_format = '@' 11 12 # 辞書の値をエクセルに書き込む 13 newws.cell(row=row+2, column=i+1).value = dic[keyname] 14 15 self.prbar1["value"] = row 16 self.update() 17# ブックを保存 18newwb.save(fname) 19 20tkmb.showinfo("Result","Finished converting !", parent=self.this) 21self.dialog.grab_set() 22

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

1:プログレスバーのMAX値をエキスポートする行数を設定
2:出力のループ内で現在までに出力された行数のカウンタを プログレスバーのVALUE値に設定

3:updateメソッドで 画面更新を達成

で一先ずできました、お騒がせしました。

投稿2020/06/29 09:15

saya24

総合スコア222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問