当按下主"新建窗口"按钮时,我正试图打开一个新窗口;根";窗这目前有效,确实打开了第二个窗口。在第二个窗口中,我想请求用户输入,然后这个输入将变成字符串列表。
一个示例输入是"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:从条目中读取数据
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()
最后一种方法的主要优点是,您可以在构建条目之前和之后处理文本。