如何让 tkinter 专注于初始化新 window 的输入框?
How to get tkinter to focus in on entry box on initializing new window?
我正在尝试使用 tkinter
创建一个新的 window,并将焦点设置在其输入框上。我正在使用以下代码,据我所知应该可以工作:
import tkinter as tk
m = tk.Tk(className="My window")
def clickclack():
new = tk.Tk(className="New")
entr = tk.Entry(new)
entr.grid()
entr.focus_set()
butt = tk.Button(m, text="My button", width=25, command=clickclack)
butt.grid()
m.mainloop()
然而,当我运行它并点击按钮时,虽然弹出了一个新的window带有输入框,但焦点不在它上面。我不确定为什么 focus_set()
在这里不起作用,如有任何帮助,我们将不胜感激。
在某个深度互联网角落(也就是 google 搜索的第五个 link)找到 this gem 后,我能够解决我的问题。简单的解决方案是使用 focus_force()
而不是 focus_set()
。在所有其余代码都相同的情况下,这个简单的更改可以解决所有问题。
您可以尝试使用 focus() 函数而不是 focus_set()
entr = tk.Entry(new)
entr.grid()
entr.focus()
不建议同时使用多个Tk
个实例time.Another window应该使用Toplevel
个实例。(可能会导致StringVar()
(等等)无法正常工作)。
由于Toplevel
没有属性className
,如果要为新的window设置标题名称,则需要使用Toplevel().title("xxxxx")
。
此外,您可以先让您的 Toplevel
聚焦,然后让您的 Entry
小部件聚焦。
尝试:
import tkinter as tk
m = tk.Tk(className="My window")
def clickclack():
new = tk.Toplevel()
new.title("New") # set title
entr = tk.Entry(new)
entr.grid()
new.focus() # make the window focused
entr.focus()
butt = tk.Button(m, text="My button", width=25, command=clickclack)
butt.grid()
m.mainloop()
我正在尝试使用 tkinter
创建一个新的 window,并将焦点设置在其输入框上。我正在使用以下代码,据我所知应该可以工作:
import tkinter as tk
m = tk.Tk(className="My window")
def clickclack():
new = tk.Tk(className="New")
entr = tk.Entry(new)
entr.grid()
entr.focus_set()
butt = tk.Button(m, text="My button", width=25, command=clickclack)
butt.grid()
m.mainloop()
然而,当我运行它并点击按钮时,虽然弹出了一个新的window带有输入框,但焦点不在它上面。我不确定为什么 focus_set()
在这里不起作用,如有任何帮助,我们将不胜感激。
在某个深度互联网角落(也就是 google 搜索的第五个 link)找到 this gem 后,我能够解决我的问题。简单的解决方案是使用 focus_force()
而不是 focus_set()
。在所有其余代码都相同的情况下,这个简单的更改可以解决所有问题。
您可以尝试使用 focus() 函数而不是 focus_set()
entr = tk.Entry(new)
entr.grid()
entr.focus()
不建议同时使用多个Tk
个实例time.Another window应该使用Toplevel
个实例。(可能会导致StringVar()
(等等)无法正常工作)。
由于Toplevel
没有属性className
,如果要为新的window设置标题名称,则需要使用Toplevel().title("xxxxx")
。
此外,您可以先让您的 Toplevel
聚焦,然后让您的 Entry
小部件聚焦。
尝试:
import tkinter as tk
m = tk.Tk(className="My window")
def clickclack():
new = tk.Toplevel()
new.title("New") # set title
entr = tk.Entry(new)
entr.grid()
new.focus() # make the window focused
entr.focus()
butt = tk.Button(m, text="My button", width=25, command=clickclack)
butt.grid()
m.mainloop()