tkinter 条目小部件未更新 [英] tkinter entry widget not updating

查看:42
本文介绍了tkinter 条目小部件未更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在网上到处搜索,但不幸的是没有找到我找到了这个问题的答案:

I've searched everywhere on the web but unfortunately no where did I find an answer to this question:

在将 tkinter Entry() 小部件的文本变量设置为文本变量之后.

after setting a tkinter Entry() widget's textvariable to a textvariable.

在条目中输入文本后,文本变量不会更新.

the text variable does not update after I have typed text into the entry.

代码如下:

def saveFileName(self):
    if(self.save_file_name != ""):
        self.window.destroy()
        self.name_not_set = False
        print("saving...")
    else:
        print("notsaving...entry empty")
        pass
def cancel(self):
    self.name_not_set = False
    self.exit = True
    self.window.destroy()
    print("exiting...")
def askForFilename(self):
    self.window = tk.Tk()
    self.window.wm_title("enter a file name")
    label = Label(self.window,text="please enter a file name:").pack(side="top")
    entry = Entry(self.window,textvariable=self.save_file_name).pack()
    save = Button(self.window,text="save",command=self.saveFileName).pack()
    cancel = Button(self.window,text="cancel",command=self.cancel).pack()
    self.window.mainloop()

已经定义了必要的变量,这些方法是一部分属于 tk.TK() 实例的类.

The necessary variables have been defined and these methods are part of a class which is a tk.TK() instance.

这个问题很麻烦:(非常难过:(

this problem is very bothersome :( very sad :(

谢谢你,提前祝你圣诞快乐!

Thank you and merry christmas in advance!

推荐答案

与 Entry 关联的文本变量应该是 StringVar().我没有在你的代码中看到任何这样的声明.

A textvariable associated with an Entry should be a StringVar(). I don't se any such declaration in your code.

self.save_file_name = StringVar()

要设置和获取 StringVar() 的值,您必须使用 set()get() 方法,例如.

To set and get the value of a StringVar() you must use the set() or get() method, eg.

def saveFileName(self):
    if(self.save_file_name.get() != ""):
        self.window.destroy()
        # etc, etc.

此外,不要创建多个 Tk() 的实例,如下所示:

Also, don't create more than one instance of Tk() as in:

def askForFilename(self):
    self.window = tk.Tk()

使用 Toplevel() 代替.甚至更好:使用 tkinter 文件对话框.

Use Toplevel() instead. Or even better: use the tkinter filedialogs.

这篇关于tkinter 条目小部件未更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆