当前位置: 首页 > 面试题库 >

Tkinter条目未显示textvariable的当前值

狄承望
2023-03-14
问题内容

考虑以下代码:

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()


 类似资料:
  • 我试图用python模块tkinter创建一个带有输入框的窗口,来制作一个石头剪刀剪纸游戏。然而,每次按下按钮时,我都在努力使输入框更新到另一个值。 我正在纠结的是,如果我要编写作为输入(假设计算机响应始终为0): 那么我的输出将是这是正确的,但是,如果我的下一个输入是一些随机的东西,如,则所需的输出将是。然而,似乎第一个输入被保存并继续使用,因为输出仍然是。 另一方面,如果我们从输入开始,则输出

  • 我已在对话框中添加了日历视图。单击按钮时会出现对话框。我面临的问题是,当对话框出现时,日历视图不会在顶部显示当前月份和年份。但当我更改月份时,顶部的月份和年份会出现(对于当前月份也是如此)。我想显示这个月和年的初始对话显示。请帮帮我。提前道谢。 我没有足够的声誉来发布一个屏幕截图。对此感到抱歉。 这是代码: 日期是一个按钮。

  • 问题内容: 我在angularjs中有一个视图,我只是想显示当前日期(格式化)。我认为应该显示当前日期。 问题答案: 您必须首先在控制器中创建日期对象: 控制器: 视图: JSFiddle示例 角度日期过滤器参考

  • 当数据列表中有一组很长的元素时,它们都会显示,旁边有一个滚动条。有没有一种简单的方法可以只显示前5名,而不显示其他的? 例如:http://jsfiddle.net/yxafa/

  • 我正在开发一个tkinter应用程序,它有一个入口小部件和一个方法,当用户在其中输入一些东西时,就可以对其进行验证。问题是 绑定在 更新之前运行validate方法,因此它测试条目中以前的内容。我想让它做的是在 更新后运行validate方法,有人知道我怎么做吗?以下是简化程序:

  • 本文向大家介绍python tkinter canvas 显示图片的示例,包括了python tkinter canvas 显示图片的示例的使用技巧和注意事项,需要的朋友参考一下 先来看一下该方法的说明 关于image有两个重要的点要注意,一个是格式,第二是要保持持续引用 The image object. This should be a 1.This should be a PhotoImag