tkinterを使い、以下のGUIアプリを作ろうとしています。
Entryに半角数字を入力し、ボタンを押したとき、その数字が
- 0以上ならば、文字色を青、Entryの背景を赤、状態をreadonlyになる
- 0未満ならば、文字色を黒、Entryの背景を白、状態をnormalになる
これを以下のコードで実装したところ、
文字色(青/黒)、状態(readonly/normal)は意図通りの挙動をしたのですが、
背景色だけ、0以上の値を入力しても白のまま変わりません。
どこが誤っているのか、調べてみましたが見当がつきませんでした。
ご教示頂けないでしょうか?
Python
1import tkinter as tk 2from tkinter import ttk 3 4def check_entry(t, entry): 5 val = float(t.get()) 6 if val >= 0: 7 entry.configure(state="readonly", 8 foreground="blue", 9 background="red") 10 else: 11 entry.configure(state="normal", 12 foreground="black", 13 background="white") 14 15root = tk.Tk() 16frame = ttk.Frame(root) 17frame.pack() 18 19t1 = tk.StringVar() 20entry1 = ttk.Entry(frame, textvariable=t1) 21 22button1 = tk.Button(frame, text="ボタン", 23 command=lambda: check_entry(t1, entry1)) 24 25entry1.pack() 26button1.pack() 27 28root.mainloop()
バージョン
- Python: 3.8.8
- tkinter: 8.6.8

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。