【问题标题】:How to set focus to a ttk.Entry widget?如何将焦点设置到 ttk.Entry 小部件?
【发布时间】:2019-06-16 01:08:44
【问题描述】:

我正在尝试使用 tkinter/ttk 构建一个基本的示例 UI。这个界面有一个ttk.Entry字段和一个ttk.Button,它基本上只是清除entry字段中的内容,并将焦点重新设置回entry字段

from tkinter import *
from tkinter import messagebox
from tkinter import ttk

def doSomething(event, entryField):
    messagebox.showwarning('', 'Warning')
    entryField.delete(0, END)
    entryField.focus_set()
    entryField.focus()

root = Tk()
entryField = ttk.Entry(root)
entryField.grid(row=0, column=0)
entryField.focus()
b = ttk.Button(root, text='Clear and focus back')
b.grid(row=1, column=0)
b.bind('<Button-1>',
       lambda event, entryField=entryField:
       doSomething(event, entryField))
root.mainloop()

问题是它没有在警告消息后重新聚焦到输入字段。 如果我使用 Entry 而不是 ttk.Entry,则代码有效

【问题讨论】:

    标签: tkinter ttk


    【解决方案1】:

    我不确定原因,但您可以使用root.after 解决它:

    def doSomething(event, entryField):
        messagebox.showwarning('', 'Warning')
        entryField.delete(0, END)
        root.after(1, lambda: entryField.focus_set())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 2011-03-15
      • 2014-04-05
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      相关资源
      最近更新 更多