Tkinter Entry小部件在顶层窗口中使用时返回一个空列表



当按下主"新建窗口"按钮时,我正试图打开一个新窗口;根";窗这目前有效,确实打开了第二个窗口。在第二个窗口中,我想请求用户输入,然后这个输入将变成字符串列表。

一个示例输入是"Amy, Bob, Carl"。预期的输出将是['Amy', 'Bob', 'Carl'],但当前程序仅返回['']

我当前的代码是:

from tkinter import *
root = Tk()
root.title("Welcome screen")
root.geometry("300x300")
def open_new_window():
top = Toplevel()
top.title("second window")
entities = Entry(top)
entries = entities.get().split(", ")
entities.pack()
entities.focus_set()
print(entries)
sub_button = Button(top, text="Submit", command= ?)
sub_button.pack(pady=20)
close_btn = Button(top, text="Close", command=top.destroy)
close_btn.pack()
open_button = Button(root, text="New Window", command=open_new_window)
open_button.pack(pady=20)
exit_button = Button(root, text="Close", command=root.destroy)
exit_button.pack(pady=20)
root.mainloop()

我是Tkinter的新手,我不确定为什么会发生这种情况。我确信这是一个简单而愚蠢的错误,但我找不到哪里出了问题。我也不确定是否需要Submit按钮,因为我不知道应该向它传递什么命令。

欢迎提出任何建议。如果需要任何其他信息,请告诉我。

首先,我们将理解为什么您得到一个空列表:您的代码是按顺序执行的,所以当您执行entities.get()时,您还没有写任何东西,也没有按下"提交";,即您想在按下";提交";,不是更早,因为这个原因,你有command = ?。据我所知,您主要有两种选择:

  1. 从按钮本身获取文本
  2. 创建一个链接到输入框的变量并读取

方法1:从条目中读取数据

from tkinter import *
root = Tk()
root.title("Welcome screen")
root.geometry("300x300")
def do_stuff(entry):
print(entry.get())
def open_new_window():
top = Toplevel()
top.title("second window")
entities = Entry(top)
entities.pack()
entities.focus_set()
sub_button = Button(top, text="Submit", command= lambda: do_stuff(entities))
sub_button.pack(pady=20)
close_btn = Button(top, text="Close", command=top.destroy)
close_btn.pack()
open_button = Button(root, text="New Window", command=open_new_window)
open_button.pack(pady=20)
exit_button = Button(root, text="Close", command=root.destroy)
exit_button.pack(pady=20)
root.mainloop()

方法2:链接变量

from tkinter import *
root = Tk()
root.title("Welcome screen")
root.geometry("300x300")
def do_stuff(text_entry):
print(text_entry.get())
def open_new_window():
top = Toplevel()
top.title("second window")
text_entry = StringVar()
entities = Entry(top, textvariable = text_entry)
entities.pack()
entities.focus_set()
sub_button = Button(top, text="Submit", command= lambda: do_stuff(text_entry))
sub_button.pack(pady=20)
close_btn = Button(top, text="Close", command=top.destroy)
close_btn.pack()
open_button = Button(root, text="New Window", command=open_new_window)
open_button.pack(pady=20)
exit_button = Button(root, text="Close", command=root.destroy)
exit_button.pack(pady=20)
root.mainloop()

最后一种方法的主要优点是,您可以在构建条目之前和之后处理文本。

相关内容

  • 没有找到相关文章

最新更新