python中textvariable_python – Tkinter Entry未显示textvariable的当前值

在Python的Tkinter GUI编程中,遇到一个Entry组件未显示textvariable的当前值的问题。当创建一个带默认值的StringVar并将其绑定到Entry时,值不显示。但如果在按钮回调函数中调用var.get(),值会正常显示。这个问题可能由于垃圾回收导致,解决方案包括避免使用嵌套函数、使StringVar全局化或将其设为tk的属性。
摘要由CSDN通过智能技术生成

考虑以下代码:

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的值将为apear.

这是由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()

标签:python,tkinter,ttk

来源: https://codeday.me/bug/20191002/1845425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值