如何在循环中初始化的 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 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告