字符串变量未设置初始值

时间:2020-02-29 18:26:52

标签: python tkinter tkinter-entry

class Lay():
  def __init__(self):
    root=Tk()
    root.configure(background="black")
    var=StringVar()
    var.set("OVERVIEW")
    Label(root,textvariable=var).grid(row=1,column=1,sticky=W+E+N+S)
    Entry(root, textvariable = var).place(rely=1.0,relx=1.0,x=0,y=0,anchor=SE)
    root.mainloop() 

您好,当我运行此命令时,不会出现字符串变量的初始值,但是当我在输入框中键入内容时,键入的文本将出现在标签中。我不太确定为什么会发生这种情况,但是我在输入框的开头有一个空标签。感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

尽管,我无法重现此问题,但我重构了您的代码以通过一个类初始化tkinter小部件(受docs中的代码段启发),并且还增加了窗口大小,以便可以清晰地查看小部件。如果您的代码中还有其他东西如@jasonharper建议那样调用多个窗口,则应该共享它们。

import tkinter as tk

class Lay(tk.Tk):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master        
        self.var=tk.StringVar()
        self.var.set("OVERVIEW")        
        self.Widgets()   


    def Widgets(self):        
        self.displaylbl = tk.Label(self,textvariable=self.var)
        self.displaylbl.grid(row=2,column=1,sticky=tk.W+tk.E+tk.N+tk.S)        
        self.entry = tk.Entry(self, textvariable = self.var)
        self.entry.place(rely=1.0,relx=1.0,x=0,y=0,anchor=tk.SE)


app = Lay()
app.geometry("200x200")
app.mainloop()

输出:

enter image description here