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

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

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

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

Python

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

Q&A

解決済

1回答

582閲覧

Pythonのlabelについて

Colt-Python

総合スコア9

Tkinter

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

Python

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

0グッド

0クリップ

投稿2020/03/16 03:47

前提・実現したいこと

Python3 tkinerでGUIツールを作成しています
下のコードではあらかじめそれぞれのLabelの場所が決まっていて、ボタンが押されるとその場所にLabelを表示するのですが、ボタンを押された順に表示するにはどうすればよいでしょうか?

該当のソースコード

Python

1import tkinter as tk 2from tkinter import ttk 3 4root = tk.Tk() 5root.title("title") 6 7 8root.geometry("1024x600") 9 10 11frame1=tk.LabelFrame(root, width=480, height=500, text="メニュー") 12frame1.place(x=0,y=0) 13 14frame2=tk.LabelFrame(root, width=213, height=400, text="注文内容") 15frame2.place(x=780,y=0) 16frame2.grid_propagate(0) 17 18frame3=tk.LabelFrame(root,width=213, height=100, text="合計金額") 19frame3.place(x=780,y=413) 20frame3.grid_propagate(0) 21 22 23a_notebook = ttk.Notebook(frame1, width=760, height=400) 24tab1 = ttk.Frame(a_notebook) 25 26a_notebook.add(tab1, text = '麺類') 27 28a_notebook.grid() 29 30 31UDN_How = 0 32UDN_Var = tk.StringVar(value="") 33SOBA_How = 0 34SOBA_Var = tk.StringVar(value="") 35RMN_How = 0 36RMN_Var = tk.StringVar(value="") 37 38 39GOK = 0 40GOK_Var = tk.StringVar(value="合計" + str(GOK) + "円") 41 42 43def UDNcom(): 44 global UDN_How 45 UDN_How = UDN_How + 1 46 47 global GOK 48 GOK = GOK + 200 49 50 UDN_Var.set("うどん 200円" + str(UDN_How) + "個") 51 GOK_Var.set("合計" + str(GOK) + "円") 52 53 54def SOBAcom(): 55 global SOBA_How 56 SOBA_How = SOBA_How + 1 57 58 global GOK 59 GOK = GOK + 200 60 61 SOBA_Var.set("そば 200円" + str(SOBA_How) + "個") 62 GOK_Var.set("合計" + str(GOK) + "円") 63 64 65def RMNcom(): 66 global RMN_How 67 RMN_How = RMN_How + 1 68 69 global GOK 70 GOK = GOK + 200 71 72 RMN_Var.set("ラーメン 200円" + str(RMN_How) + "個") 73 GOK_Var.set("合計" + str(GOK) + "円") 74 75 76#tab1 77UDN = tk.Button(tab1, width=18, height=5, command=UDNcom, text="うどん\n¥200") 78UDN.grid(column=0, row=0) 79 80SOBA = tk.Button(tab1, width=18, height=5, command=SOBAcom, text="そば\n¥200") 81SOBA.grid(column=1, row=0) 82 83RMN = tk.Button(tab1, width=18, height=5, command=RMNcom, text="ラーメン\n¥200") 84RMN.grid(column=2, row=0) 85 86 87UDN_Lab = tk.Label(frame2, textvariable=UDN_Var) 88UDN_Lab.grid() 89 90SOBA_Lab = tk.Label(frame2, textvariable=SOBA_Var) 91SOBA_Lab.grid() 92 93RMN_Lab = tk.Label(frame2, textvariable=RMN_Var) 94RMN_Lab.grid() 95 96 97 98GOK_Lab = tk.Label(frame3, textvariable=GOK_Var) 99GOK_Lab.grid() 100 101 102root.mainloop()

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

python3 tkinter windows10 atom

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

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

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

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

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

guest

回答1

0

ベストアンサー

各ボタンを押された時にラベルの値に該当する文字が含まれているか判定し、
なければラベルをフレームに追加するようにすればいいと思います。

python

1・・・ 2def UDNcom(): 3 # 'うどん'がラベルの値に含まれていない場合 4 if 'うどん' not in UDN_Var.get(): 5 # ラベルをフレームに追加 6 UDN_Lab = tk.Label(frame2, textvariable=UDN_Var) 7 UDN_Lab.grid() 8 9 global UDN_How 10 UDN_How = UDN_How + 1 11 12 global GOK 13 GOK = GOK + 200 14 15 UDN_Var.set("うどん 200円" + str(UDN_How) + "個") 16 GOK_Var.set("合計" + str(GOK) + "円") 17 18 19def SOBAcom(): 20 # 'そば'がラベルの値に含まれていない場合 21 if 'そば' not in SOBA_Var.get(): 22 # ラベルをフレームに追加 23 SOBA_Lab = tk.Label(frame2, textvariable=SOBA_Var) 24 SOBA_Lab.grid() 25 26 global SOBA_How 27 SOBA_How = SOBA_How + 1 28 29 global GOK 30 GOK = GOK + 200 31 32 SOBA_Var.set("そば 200円" + str(SOBA_How) + "個") 33 GOK_Var.set("合計" + str(GOK) + "円") 34 35 36def RMNcom(): 37 # 'ラーメン'がラベルの値に含まれていない場合 38 if 'ラーメン' not in RMN_Var.get(): 39 # ラベルをフレームに追加 40 RMN_Lab = tk.Label(frame2, textvariable=RMN_Var) 41 RMN_Lab.grid() 42 43 global RMN_How 44 RMN_How = RMN_How + 1 45 46 global GOK 47 GOK = GOK + 200 48 49 RMN_Var.set("ラーメン 200円" + str(RMN_How) + "個") 50 GOK_Var.set("合計" + str(GOK) + "円") 51 52 53#tab1 54UDN = tk.Button(tab1, width=18, height=5, command=UDNcom, text="うどん\n¥200") 55UDN.grid(column=0, row=0) 56 57SOBA = tk.Button(tab1, width=18, height=5, command=SOBAcom, text="そば\n¥200") 58SOBA.grid(column=1, row=0) 59 60RMN = tk.Button(tab1, width=18, height=5, command=RMNcom, text="ラーメン\n¥200") 61RMN.grid(column=2, row=0) 62 63''' 64ここは不要 65UDN_Lab = tk.Label(frame2, textvariable=UDN_Var) 66UDN_Lab.grid() 67 68SOBA_Lab = tk.Label(frame2, textvariable=SOBA_Var) 69SOBA_Lab.grid() 70 71RMN_Lab = tk.Label(frame2, textvariable=RMN_Var) 72RMN_Lab.grid() 73''' 74 75 76GOK_Lab = tk.Label(frame3, textvariable=GOK_Var) 77GOK_Lab.grid() 78 79root.mainloop()

投稿2020/03/16 08:19

yureighost

総合スコア2183

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

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

Colt-Python

2020/03/16 09:06

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問