如何在迴圈中初始化的 Tkinter 按鈕更改文字?


當我們構建計算機程式時,使它們看起來美觀且易於使用非常重要。Tkinter 是一個方便的 Python 工具,可以幫助我們建立這些使用者友好的圖形使用者介面 (GUI)。現在,假設您的程式中有一些按鈕,並且您希望在有人單擊它們時更改它們顯示的內容。這就是 Tkinter 的動態文字更新發揮作用的地方,尤其是在您在迴圈中建立按鈕時。

在本文中,我們將更深入地瞭解如何以一種很酷的方式使我們的 Tkinter 按鈕更新其文字。我們將介紹在迴圈中建立按鈕的基礎知識,並學習如何動態更改其文字。當您想要使程式更具互動性和使用者友好性時,這些技能將派上用場。讓我們開始吧!

如何在迴圈中初始化按鈕?

假設您的程式中需要多個按鈕,並且您不想一個一個地建立它們。這就是迴圈派上用場的地方。在以下示例中,我們使用迴圈建立三個按鈕,每個按鈕分別標記為“按鈕 0”、“按鈕 1”和“按鈕 2” -

import tkinter as tk
# Function to create buttons
def Init_buttons():
   # List to store button instances
   buttons = []

   # Loop to create three buttons
   for i in range(3):
      # Create a button with the text "Button 0," "Button 1," etc.
      button = tk.Button(root, text=f"Button {i}")

      # Pack the button into the Tkinter window
      button.pack()

      # Add the button instance to the list
      buttons.append(button)

   # Return the list of button instances
   return buttons

# Create the main Tkinter window
root = tk.Tk()
# Set the window title
root.title("Change Text of Tkinter Button Initialised in Loop")  
# Set window dimensions
root.geometry("720x250")

# Call the create_buttons function to create and display buttons
buttons_list = Init_buttons()

# Start the Tkinter event loop
root.mainloop()

這裡,Init_buttons 是一個函式,它使用迴圈在 Tkinter 視窗中建立和顯示這些按鈕。這就像一個快捷方式,可以避免為每個按鈕單獨編寫相同的程式碼。

動態文字更新

當按鈕上的文字需要根據使用者互動或其他事件更改時,動態文字更新變得必要。本文重點介紹按鈕在單擊時需要動態更新的場景。

按鈕命令的 Lambda 函式

為了實現動態更新,通常將 lambda 函式與按鈕命令一起使用。Lambda 函式允許我們將引數傳遞給函式。在這種情況下,我們希望在單擊按鈕時將按鈕例項傳遞給 update_text 函式。程式碼的以下修改實現了這一點 -

# Function to create and configure buttons
def Init_buttons():
   # List to store button instances
   buttons = []

   # Loop to create three buttons
   for i in range(3):
      # Create a button with the text "Button 0," "Button 1," etc.
      # Set the command to call update_text function with the corresponding button as an argument
      button = tk.Button(root, text=f"Button {i}", command=lambda idx=i: update_text(buttons[idx]))
       
      # Pack the button into the Tkinter window
      button.pack()

      # Add the button instance to the list
      buttons.append(button)

   # Return the list of button instances
   return buttons

動態更新按鈕文字

update_text 函式負責動態更新按鈕文字。它將“已點選”附加到按鈕的當前文字 -

# Function to update the text of a button dynamically
def update_text(button):
   # Get the current text of the button and append " Clicked"
   new_text = button["text"] + " Clicked"
    
   # Configure the button to display the updated text
   button.config(text=new_text)

示例

完整的示例演示了這些概念的整合。

import tkinter as tk
# Function to update the text of a button dynamically
def update_text(button):
   # Get the current text of the button and append " Clicked"
   new_text = button["text"] + " Clicked"
    
   # Configure the button to display the updated text
   button.config(text=new_text)

# Function to create and configure buttons
def Init_buttons():
   # List to store button instances
   buttons = []

   # Loop to create three buttons
   for i in range(3):
      # Create a button with the text "Button 0," "Button 1," etc.
      # Set the command to call update_text function with the corresponding button as an argument
      button = tk.Button(root, text=f"Button {i}", command=lambda idx=i: update_text(buttons[idx]))
      
      # Pack the button into the Tkinter window
      button.pack()

      # Add the button instance to the list
      buttons.append(button)

   # Return the list of button instances
   return buttons

# Create the main Tkinter window
root = tk.Tk()
# Set the window title
root.title("Change Text of Tkinter Button Initialised in Loop")  
# Set window dimensions
root.geometry("720x250")

# Call the create_buttons function to create and display buttons
buttons_list = Init_buttons()

# Start the Tkinter event loop
root.mainloop()

在下面的輸出中,您可以看到按鈕是在迴圈中建立的,並且在單擊時它們的文字會動態更新。

輸出

結論

總之,掌握在迴圈中初始化的 Tkinter 按鈕的動態文字更新是建立互動式和使用者友好的 Python GUI 應用程式的關鍵。透過理解 Tkinter 的基礎知識並利用 lambda 函式,我們可以有效地管理按鈕例項並響應使用者互動。提供的示例演示了動態按鈕的建立,並展示瞭如何無縫更新其文字。應用這些技術可以增強整體使用者體驗,使應用程式更具吸引力和響應性。

更新於: 2023-12-05

646 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告