エントリボックスの検証にはhereから行っています。以下のコードは、入力された値が'Q'
であれば、プログラムは'test'
をエントリ値の先頭に追加するという条件付きの答えです。tkinterにデフォルト値を挿入するエントリの検証が終了しない
この値が挿入されると、すべての検証がウィンドウから外れて表示され、エントリでは大文字の値が許可されます。私のプログラムのいくつかのテストでは、エントリのさらなるイベント(key、focusin/outなど)に対して検証コマンド(この場合はOnValidate
)が呼び出されないことが示されています。
import Tkinter as tk
class MyApp():
def __init__(self):
self.root = tk.Tk()
vcmd = (self.root.register(self.OnValidate),
'%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
self.entry = tk.Entry(self.root, validate="key",
validatecommand=vcmd)
self.entry.pack()
self.root.mainloop()
def OnValidate(self, d, i, P, s, S, v, V, W):
if S == "Q":
self.entry.insert(0,"test")
# only allow if the string is lowercase
return (S.lower() == S)
app=MyApp()
私はこれを行う理由は、私は、その値がユーザーによって行われた変更後に空のままにされている場合エントリは、デフォルト値を表示したいです。 (つまり、私の状態は、フォーカスにif not P
になるでしょう)
これを実装する方法や上記で間違っていることが大いにありがたいです。
おかげで、私の希望する行動を得るためにこの方法に従った。 – Jdog