这几天某同学遇到了一个棘手的问题,困扰了很久。今天终于解决了,我来记录一下坑。
情景:python 使用tkinter为第二层窗体(顶层窗体)中的一个输入框设定默认值时,总是无法设置,而且对输入框获取值,也是空的。没有报错。
解决办法:只需要顶层窗体使用Toplevel,其余代码不变就可以解决。(toplevel本就在tkinter库当中,不需要引入,只需要将上层窗体由tk.Tk()改用tk.Toplevel()即可)
代码示例:底层窗口一个按钮,打开新窗口(顶层窗口),新窗口输入框显示默认值,输入新值,获取新值。
import tkinter as tk
# 设置根(底层)窗口
window =
tk.Tk()
window.title('根窗口')
window.geometry('500x300')
# 传值变量
textVar =
tk.StringVar()
textVar.set('在这里输入...')
# 获取新窗口中输入框的数据
def getText():
global textVar
text =
textVar.get()
print(text)
# 创建新窗口
def create_toplevel():
# 新窗口(顶层窗口),使用Toplevel
top =
tk.Toplevel()
top.title('打开新窗口')
top.geometry('400x200')
textInput = tk.Entry(top, bd=10, textvariable=
textVar)
textInput.pack()
# 获取值的按钮
getInputTextBtn = tk.Button(top, text=
"获取值", font=16, bg=
"silver", relief=
'groove', command=getText).place(x=150, y=120
)
top.mainloop()
# 打开新窗口
openNewWindowBtn = tk.Button(window, text=
'打开新窗口', font=16, bg=
"silver",
relief=
'groove', height=2, width=28, command=
create_toplevel).pack()
window.mainloop()
效果:
PS:页面放大食用更佳。