Python 3.x 名称';主窗口';没有定义
程序应该打开一个新窗口,其中包含第一个窗口中输入框中的文本,但如果我写入,它会显示Python 3.x 名称';主窗口';没有定义,python-3.x,tkinter,Python 3.x,Tkinter,程序应该打开一个新窗口,其中包含第一个窗口中输入框中的文本,但如果我写入,它会显示None from tkinter import * def create_main_window(): global main_window main_window = Toplevel() main_window.update() entrance_window = Tk() first_text_label = Label(entrance_window, text="y
None
from tkinter import *
def create_main_window():
global main_window
main_window = Toplevel()
main_window.update()
entrance_window = Tk()
first_text_label = Label(entrance_window, text="you are in:").grid(row=0, column=0)
place_entry = Entry(entrance_window).grid(row=0, column=1)
submit_button = Button(entrance_window, text="Submit", command=create_main_window).grid(row=1, column=0, columnspan=2)
Label(main_window, text=f"{place_entry}").pack()
entrance_window.mainloop()
在create_main_窗口中,或者如果我在按钮代码之后编写,它会给我一个错误,告诉我main_窗口没有定义
有人能帮忙吗?这是因为您试图向不存在的对象添加标签。将Label函数移动到create_main_window()函数,如下所示:
Label(main_window, text=f"{place_entry}").pack()
试试这个:
从tkinter导入*
def create_主窗口():
全局主窗口
主窗口=顶层(主窗口)
label=label(主窗口,text=f“{place\u entry.get()}”)
label.pack()
#main_window.update()#这没用
入口窗户=Tk()
第一个文本标签=标签(入口窗口,text=“您在:”)
第一个文本标签网格(行=0,列=0)
地点\入口=入口(入口\窗口)
place_entry.grid(行=0,列=1)
提交按钮=按钮(入口窗口,text=“提交”,命令=创建主窗口)
提交按钮网格(行=1,列=0,列span=2)
入口_window.mainloop()
我将标签创建移到了
create\u主窗口中
。另外请注意,使用var=a().b()
,保存b()
在var
中返回的内容。这就是为什么当您使用var=Entry(…).pack(…)
时,var
总是None
您不需要全局主窗口、入口窗口中的入口窗口。另外,place\u条目
将始终为None
。还有,你到底想用f“{place_entry}”
做什么?我只是在编辑OP的代码,这样它就不会抛出错误,但我不确定某些脚本的原因。在编写答案时,请确保所有可能的错误都已修复。
from tkinter import *
def create_main_window():
global main_window, entrance_window
main_window = Toplevel()
place_entry = Entry(entrance_window).grid(row=0, column=1)
Label(main_window, text=f"{place_entry}").pack()
main_window.update()
entrance_window = Tk()
first_text_label = Label(entrance_window, text="you are in:").grid(row=0, column=0)
submit_button = Button(entrance_window, text="Submit", command=create_main_window).grid(row=1, column=0, columnspan=2)
entrance_window.mainloop()