Обновление StringVar в записи tkinter - PullRequest
0 голосов
/ 22 мая 2018

Может кто-нибудь сказать мне принятый способ в Python 3 для обновления stringvar в записи Tinker.В приведенном ниже коде я хотел бы изменить текст в записи с «текст по умолчанию» на «новый текст» после нажатия кнопки.Спасибо.

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 голосов
/ 22 мая 2018

установить текстовую переменную:

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

Это сработало для меня

0 голосов
/ 22 мая 2018

Сделайте это

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