0
私はテキストウィジェットとボタンがあるシンプルなUIのためにPythonでTkinterを使用しています。ボタンを押すと、focus_set()メソッドを使ってカーソルフォーカスをテキストウィジェットに設定します。Tkinter focus_set()はテキストウィジェットでは機能しません
なぜ私のコードでfocus_set()が機能しないのか分かりません。テキストウィジェットがフレーム(フレーム1)内にあり、私のstartPaus()メソッドでこのウィジェットに正しくアクセスできないことが原因と思われます。どのように私は問題を解決することができます任意のアイデア??
class TypingField(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.submit_tog = True
self.initUI()
def initUI(self):
self.parent.title("Text Field")
self.pack(fill = BOTH, expand=True)
frame1 = Frame(self, width = 50, height =25)
frame1.pack(fill = X, expand=True)
self.scroll = Scrollbar(frame1)
self.scroll.pack(side = "right", fill = Y)
self.text = Text(frame1)
self.text.pack(fill=Y)
self.scroll.config(command=self.text.yview)
self.text.config(yscrollcommand=self.scroll.set)
frame2 = Frame(self)
frame2.pack(fill=X, expand=True)
self.submit = Button(frame2,text="Start Test")
self.submit.bind("<Button-1>", self.startPause)
self.submit.pack(fill=X)
def startPause(self, event):
if self.submit_tog:
self.submit.configure(text = "Pause")
self.text.focus_set()
else:
self.submit.configure(text = "Start Test")
self.submit_tog = not self.submit_tog
返信ありがとうございますが、何らかの理由でこれは私の場合ではなく、テキストフィールドに焦点を当てません。あなたの行を追加することによって、それはまだ動作しません。 – swang
一度self.text.focuse_set()を実行すると、self.focus_get()== self.textによってフォーカスがチェックされ、Trueを返します。しかし、私はテキストフィールドを選択せずにすぐに物事を入力することはできませんので、テキストフィールドに焦点を当てていません。フォーカスはまだボタンにあります – swang
私は、フレームの混乱をまっすぐに整えたので、私はラインを追加する以上のことをしました。投稿されたコードをコピーアンドペーストして実行し、何が起こるかを見てください。 –