🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

2回答

627閲覧

関数実行時に複数の処理を1回ずつ実行したい

nezunezuo

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/03/07 05:46

編集2021/03/07 07:06

前提・実現したいこと

Python(tkinter)で簡単なアプリを作っています。

実現したいこと

関数実行時(def button_click)に
下記計3回の処理を1回ずつ表示したい
1回目:0.25足す
2回目:さらに0.25足す
3回目:1、2回目の足した分を0にする

関数実行時(ボタンを押すたび)に表示をしていく仕様に
なります。

ご教示頂けると助かります。

該当のソースコード

Python
ソースコード

def button_click:
l_ini=float(label6.text)
l_add=0.25
l_num=l_ini+l_add
label6.text=f'{l_num:.02f}'
if l_add==0.25:
l_add=+0.25
l_num=l_ini+l_add
label6.text=f'{l_num:.02f}'
if l_add==0.50:
l_add=0
l_num=l_ini+l_add
label6.text=f'{l_num:.02f}'

試したこと

上記のコードだと関数を実行すると一気に処理する。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

t_obara

2021/03/07 06:54

結果がどのようになることを望んでいるのかが良くわかりません。数秒おきに表示が切り替わるのか、ボタンを押すたびに表示が変わるのかなどがわからないと、それによる実装も異なります。
nezunezuo

2021/03/07 07:08

t_obaraさん ご指摘ありがとうございます。 「ボタンを押すたび」の旨を追記致しました。
Daregada

2021/03/07 07:55

label6ってtk.Label()で作っていますか? それだと、「label6.text」でテキストは取得・設定できませんが。
guest

回答2

0

python3

1 2# coding: utf-8 3 4 5class ButtonClickHandler: 6 def __init__(self): 7 self.counter = 0 8 self.sum = 0 9 10 def button_click(self): 11 if self.counter % 3 in [0, 1]: 12 self.sum += 0.25 13 else: 14 self.sum -= 0.25 * 2 15 16 self.counter += 1 17 18 return self.sum 19 20if __name__ == '__main__': 21 handler = ButtonClickHandler() 22 for i in range(10): 23 print('Click', i+1, handler.button_click()) 24

実行結果

text

1Click 1 0.25 2Click 2 0.5 3Click 3 0.0 4Click 4 0.25 5Click 5 0.5 6Click 6 0.0 7Click 7 0.25 8Click 8 0.5 9Click 9 0.0 10Click 10 0.25

投稿2021/03/07 09:01

izuna385

総合スコア53

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

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

nezunezuo

2021/03/07 11:25

ありがとうございます。解決出来ました。
guest

0

ベストアンサー

label6.textが何であるかはわかりませんが、値取得と代入が出来るのであれば

python

1counter = 0 2def button_click(): 3 global counter 4 l_ini = float(label6.text) 5 l_add=0.25 6 if counter <= 1: 7 l_num = l_ini + l_add 8 counter += 1 9 else: 10 l_num = l_ini - l_add * 2 11 counter = 0 12 label6.text = f'{l_num:.02f}' 13 return

実行結果

pythn

1>>> print(label6.text) 21.10 3>>> button_click() 4>>> print(label6.text) 51.35 6>>> button_click() 7>>> print(label6.text) 81.60 9>>> button_click() 10>>> print(label6.text) 111.10

投稿2021/03/07 08:19

ppaul

総合スコア24670

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

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

nezunezuo

2021/03/07 11:24

ありがとうございます。解決出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問