在tkinter条目中更新StringVar

时间:2018-05-22 09:13:05

标签: python-3.x tkinter tkinter-entry

有人可以告诉我python 3中接​​受的方式来更新修补程序条目中的stringvar。在下面的代码中,我希望条目中的文字更改为"默认文本"到"新文本"按下按钮后。谢谢。

import tkinter as tk
from tkinter import *
from tkinter import ttk

def get_var():
    new_text = "new text"
    print(new_text)

window = Tk()
window.title("My Program")

v = StringVar(window, value='default text')
case_name_lbl = Label(window, text="Case Name:").pack(padx=10, pady=10, 
side=LEFT)
case_name_entry = Entry(window, textvariable=v)
case_name_entry.pack(fill=tk.X, expand=True, padx=10, pady=10, side=LEFT)

btn = Button(window, text='File', width=10, command=get_var)
btn.pack(in_=window, padx=10, pady=10, side=LEFT)

window.mainloop()

2 个答案:

答案 0 :(得分:1)

设置textvariable:

def get_var():
    new_text = "new text"
    v.set(new_text)
    print(new_text)

这对我有用

答案 1 :(得分:0)

这样做

def get_var():
    case_name_entry.delete(0, END)
    new_text = "new text"
    print(new_text)
    case_name_entry.insert(0, new_text)

它将清除该条目并在其中插入文本,并且不要使用通配符tkinter导入*,因此在完成import tkinter as tk之后无需像这样导入。如果沿着你想要调试你的行,那么你Stringvar的位置将非常困难。以下是你的代码的良好结构。

完整代码

import tkinter as tk

def get_var():
    case_name_entry.delete(0, tk.END)
    new_text = "new text"
    print(new_text)
    case_name_entry.insert(0, new_text)


window = tk.Tk()
window.title("My Program")


case_name_lbl = tk.Label(window, text="Case Name:")
case_name_lbl.pack(padx=10, pady=10,side=tk.LEFT)

v = tk.StringVar(window, value='default text')
case_name_entry = tk.Entry(window, textvariable=v)
case_name_entry.pack(fill=tk.X, expand=True, padx=10, pady=10, side=tk.LEFT)

btn = tk.Button(window, text='File', width=10, command=get_var)
btn.pack(in_=window, padx=10, pady=10, side=tk.LEFT)

window.mainloop()