Como definir o texto do widget de entrada do Tkinter com um botão

Jinku Hu 30 janeiro 2023
  1. Método Tkinter delete e insert para definir o conteúdo do Entry
  2. Tkinter StringVar Método para definir o conteúdo do Tkinter Entry Widget
Como definir o texto do widget de entrada do Tkinter com um botão

Temos dois métodos para definir ou alterar o texto do widget Tkinter Entry clicando em um botão,

  1. Método Tkinter delete e insert.
  2. Tkinter StringVar Método

Método Tkinter delete e insert para definir o conteúdo do Entry

O widget Tkinter Entry não tem um método dedicado de set para definir o conteúdo da Entry. Ele precisa primeiro deletar o conteúdo existente e depois inserir o novo conteúdo se tivermos que alterar o conteúdo completamente.

Códigos de trabalho completos para definir o texto no método Entry com os métodos delete e insert

import tkinter as tk

root = tk.Tk()
root.geometry("400x50")


def setTextInput(text):
    textExample.delete(0, "end")
    textExample.insert(0, text)


textExample = tk.Entry(root)
textExample.pack()

btnSet = tk.Button(
    root, height=1, width=10, text="Set", command=lambda: setTextInput("new content")
)
btnSet.pack()

root.mainloop()

Tkinter Set Conteúdo do Tkinter Entry_delete e método de inserção

textExample.delete(0, "end")

O método delete de Entry exclui o intervalo especificado de caracteres em Entry.

0 é o primeiro caractere e "end" é o último caractere do conteúdo no widget Entry. Portanto, delete(0, "end") apaga todo o conteúdo dentro da caixa Entry.

textExample.insert(0, text)

O método insert insere o texto na posição especificada. No código acima, ele insere o text no início.

Tkinter StringVar Método para definir o conteúdo do Tkinter Entry Widget

Se o conteúdo do widget Tkinter Entry foi associado a um objeto StringVar, ele poderia mudar automaticamente o conteúdo do widget Tkinter Entry toda vez que o valor do StringVar fosse atualizado.

Códigos de trabalho completos para definir texto em Entry com objeto StringVar

import tkinter as tk

root = tk.Tk()
root.geometry("400x50")


def setTextInput(text):
    textEntry.set(text)


textEntry = tk.StringVar()

textExample = tk.Entry(root, textvariable=textEntry)
textExample.pack()

btnSet = tk.Button(
    root, height=1, width=10, text="Set", command=lambda: setTextInput("new content")
)
btnSet.pack()

root.mainloop()
textEntry = tk.StringVar()

textExample = tk.Entry(root, textvariable=textEntry)

textEntry é um objeto StringVar e está associado ao conteúdo do texto, ou em outras palavras, a opção textvariable no widget Entry.

textEntry.set(text)

Se a textEntry for atualizada para ter um novo valor text, então os widgets cuja textvariable estão associados a ela serão automaticamente atualizados.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - Tkinter Entry