3

Tkinter.Textウィジェットで検証を取得するためのオプションは何ですか? の高度な機能は必要ありませんText。複数行の属性だけが必要です。残念ながら、textvariablevalidateコマンドの両方が欠けているため、テキストが変更されるたびにチェックする何らかのコールバックをアタッチすることはできないようです。<KeyRelease>Shift、Ctrlなどのキーを含むすべてのキープレスをキャプチャするように見えるため、バインドする必要は避けたいと思います。

基本的に、テキスト フィールドが空白かどうかを確認し、必要に応じて [OK] ボタンを有効/無効にする必要があります (つまり、テキストがない場合、ボタンは無効になります)。

Entryこれの代わりに、Python で書かれた複数行の機能を追加する適切なサブクラスに出くわした人はいますか? に追加されるthisがありますが、Python ではなく純粋な TCL で記述されており、既存の Python 環境に統合するのは難しいようです。textvariableText

4

1 に答える 1

4

ボタンへのバインドは<KeyRelease>煩雑である必要はありません。押されたキーの値を確認する必要はありませんが、ウィジェットのコンテンツをフェッチする必要はありません。最後に常に '\n' があることに注意してください。そのため、コンテンツを取得するときは破棄することを忘れないでください。

content = text.get(1.0, "end-1c")

次に、この値に基づいてボタンの状態を変更する必要があります。

import Tkinter as tk

def configure_ok_button(event):
    content = event.widget.get(1.0, "end-1c")
    state = "active" if content else "disabled"
    button.configure(state=state)

root = tk.Tk()
text = tk.Text(root)
button = tk.Button(root, text="Ok", state="disabled")
text.bind("<KeyRelease>", configure_ok_button)
text.pack()
button.pack()
root.mainloop()
于 2013-06-15T11:07:34.017 に答える