如何使用按鈕設定 Tkinter Entry 文字輸入控制元件的文字

Jinku Hu 2023年1月30日 2020年3月28日
  1. Tkinter 的 deleteinsert 方法來設定 Entry 文字輸入控制元件的內容
  2. Tkinter StringVar 方法來設定 Tkinter Entry 控制元件的內容
如何使用按鈕設定 Tkinter Entry 文字輸入控制元件的文字

我們有兩種方法可以通過單擊按鈕來設定或更改 Tkinter Entry 文字輸入控制元件的文字,

  1. Tkinter 的 deleteinsert 方法
  2. Tkinter 的 StringVar 方法

Tkinter 的 deleteinsert 方法來設定 Entry 文字輸入控制元件的內容

Tkinter 的 Entry 控制元件沒有專用的 set 方法來設定 Entry 文字輸入的內容。如果我們必須更改內容,它首先需要刪除現有內容,然後插入新內容。

使用 deleteinsert 方法在文字輸入框中設定文字的完整的工作程式碼

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 Entry 文字輸入框內容_delete 和 insert 方法

textExample.delete(0,"end")

Entrydelete 方法刪除在文字輸入框中指定範圍的字元。

0Entry 控制元件中內容的第一個字元,"end" 是內容的最後一個字元。因此,delete(0, "end") 刪除文字輸入框中的所有內容。

textExample.insert(0, text)

insert 方法將文字插入指定位置。在上面的程式碼中,它在開頭插入了 text

Tkinter StringVar 方法來設定 Tkinter Entry 控制元件的內容

如果 Tkinter Entry 控制元件的內容已與 StringVar 物件相關聯,則每次更新 StringVar 的值時,它可以自動更改 Tkinter Entry 控制元件的內容。

使用 StringVar 物件在 Entry 中設定文字的完整工作程式碼

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 是一個 StringVar 物件,它與文字內容關聯,或者與 Entry 控制元件中的 textvariable 選項關聯。

textEntry.set(text)

如果將 textEntry 更新為新值 text,則與 textvariable 關聯的控制元件將被自動更新。

Author: 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

相關文章 - Tkinter Entry