【问题标题】:Updating or reseting a tkinter display更新或重置 tkinter 显示
【发布时间】:2017-07-03 05:45:30
【问题描述】:

我正在开发一个小型 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()

【问题讨论】:

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


【解决方案1】:

我认为问题在于您试图访问您在销毁窗口之前分配的变量,而窗口被销毁后,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()

【讨论】:

    【解决方案2】:

    它没有运行,因为有很多错误并且没有逻辑。 您无缘无故地使用了许多函数,但它们都没有返回值。 此外,您销毁了关闭根窗口的 Entry 小部件,然后 您要求使用不返回任何内容的函数从刚刚销毁的条目中获取文本。即使您不破坏根窗口并使用顶级窗口,该程序仍然无法运行,因为您的函数不会返回任何内容。

    您似乎不了解函数的基本用法。在尝试更复杂的东西之前,请考虑使用简单的程序来处理函数。

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2017-07-21
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多