更新或重新设置tkinter显示

时间:2017-02-14 19:26:45

标签: python-3.x user-interface tkinter window

我正在开发一个小型的Tkinter程序,一旦启动它就会提示您输入一个名称,然后点击提交后它将显示“欢迎来到我的世界”。我在检索输入并在新窗口中显示输入或使用新信息更新窗口时遇到问题,但它显示Py_Var1作为条目名称。我做错了什么,是因为我试图在新窗口中显示信息还是我使用错误的函数?

这是我的代码

from tkinter import *

root = Tk()

#Functions

def info():
    a= entry_1.get()


def close_window(root):
        root.destroy()
def comb(event=None):
       info()
       close_window(root)



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16))
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12))
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12))
root.bind("<Return>", comb)

aVar = StringVar(entry_1.get())
aVar.set(aVar)
#entry display
input_1.grid(row=1, sticky=E)
entry_1.grid(row=1, column=1)
button.grid(row=3, column=1)

root.mainloop()
##Second Window
root = Tk()

Var = StringVar()
Var.set(info)

t1 = Label(root, text="Welcome")
t2 = Label(root, text= Var)
t3 = Label(root, text="to my world")

#Display

t1.grid(row=1, column=1)
t2.grid(row=1, column=2)
t3.grid(row=1, column=3)

root.mainloop()

2 个答案:

答案 0 :(得分:0)

我认为问题在于你试图访问一个你在摧毁窗户之后分配的变量,而这个变量在Tkinter销毁之后无法完成。需要一个全局变量。您的代码现在应该可以使用了。

from tkinter import *

root = Tk()

#Functions

def info():
    global a
    a= entry_1.get()


def close_window(root):
        root.destroy()
def comb(event=None):
       info()
       close_window(root)



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16))
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12))
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12))
root.bind("<Return>", comb)


#entry display
input_1.grid(row=1, sticky=E)
entry_1.grid(row=1, column=1)
button.grid(row=3, column=1)

root.mainloop()
##Second Window
root = Tk()

t1 = Label(root, text="Welcome "+str(a)+" to my world")
##t2 = Label(root, text= Var)
##t3 = Label(root, text="to my world") # cleaner this way

#Display

t1.grid(row=1, column=1)
#t2.grid(row=1, column=2)
#t3.grid(row=1, column=3)

root.mainloop()

答案 1 :(得分:0)

它没有运行,因为有很多错误而没有逻辑。 你使用很多函数没有理由,它们都没有返回值。 此外,您将销毁关闭根窗口的Entry小部件,之后 您要求使用不返回任何内容的函数从您刚刚销毁的条目中获取文本。即使你没有销毁根窗口并使用顶层窗口,这个程序仍然无法工作,因为你的函数不返回任何东西。

看起来你不了解函数的基本用法。在尝试更复杂的事情之前,请考虑使用简单程序的函数。