[解決済み] tkinter pythonでボタンの背景色を点滅させる方法
2022-02-16 02:44:14
質問
2つのボタンと1つのエントリーがあるシンプルなウィンドウがあります。エントリーからのテキストがボタン2のテキストと同じ場合、ボタン2を点滅させたいのです。after関数を使ってみましたが、うまくいきません。色を変えることはできますが、点滅させる方法がわかりません。 以下は私のコードです。
import tkinter as tk
text = ""
def gettext():
text = entry.get()
if text == button2['text']:
button2.config(background='red')
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
button1 = tk.Button(root, text="Text", command=gettext)
button1.pack(side="bottom", padx=20, pady=20)
button2 = tk.Button(root, text="Flashing")
button2.pack(side="bottom", padx=20, pady=20)
root.mainloop()
解決方法は?
これを試してみてください。
import tkinter as tk
text = ""
def gettext(*args):
text = entry.get()
if text == button2.cget("text"):
# Change the button's bg to red
button2.config(background="red")
# After 100ms reset the variable's bg
button2.after(100, lambda: button2.config(background="#f0f0ed"))
# After 100 more milliseconds call `gettext` again
button2.after(200, gettext)
root = tk.Tk()
# Create a StringVar variable
variable = tk.StringVar(root)
# Trace the variable
variable.trace("w", gettext)
# Attach it to the entry
entry = tk.Entry(root, textvariable=variable)
entry.pack()
button2 = tk.Button(root, text="Flashing")
button2.pack()
root.mainloop()
ボタンを1つ削除して
StringVar
代わりに(テストをしやすくするために)。ロジックは非常にシンプルです。
- ボタンのbgを赤に変更する
- 100ミリ秒待って、ボタンのbgをリセットする
- さらに100ミリ秒後に、この関数を再度実行する
関連
-
Python 入出力と高次代入の基礎知識
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Pythonで文字列を小文字にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
PicgoのイメージベッドツールをPythonで実装する
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない