繁体   English   中英

Tkinter条目未显示textvariable的当前值

[英]Tkinter Entry not showing the current value of textvariable

考虑以下代码:

from tkinter import *
from tkinter.ttk import *

tk=Tk()

def sub():
    var=StringVar(value='default value')

    def f(): pass

    Entry(tk,textvariable=var).pack()
    Button(tk,text='OK',command=f).pack()

sub()
mainloop()

我们希望var的值出现在条目中,但实际上没有出现。

条目中没有任何内容

奇怪的是,如果将声明var.get()放在按钮的回调函数中,则var的值将会出现。

价值出现了

这是由Python中的某种局部变量优化引起的错误吗? 我该怎么做才能确保textvariable的值始终出现在条目中?

请为我的英语不好而处决我。

它正在收集垃圾。

您可以删除该函数(也不应该像这样嵌套函数)

from tkinter import *
from tkinter.ttk import *

tk=Tk()

var=StringVar(value="default value")
Entry(tk, textvariable=var).pack()
Button(tk,text='OK').pack()

mainloop()

或者,如果要保留该功能,则将stringvar设置为tk的属性或将其设置为全局属性。

使其全球化:

from tkinter import *
from tkinter.ttk import *

tk=Tk()
var = StringVar(value="Default value")

def sub():

    Entry(tk, textvariable=var).pack()
    Button(tk,text='OK').pack()

sub()
mainloop()

作为tk的属性:

from tkinter import *
from tkinter.ttk import *

tk=Tk()

def sub():

    tk.var = StringVar(value="Default value")
    Entry(tk, textvariable=tk.var).pack()
    Button(tk,text='OK').pack()

sub()
mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM