从循环中获取 Tkinter Entry
Tkinter 是一个流行的 Python 库,用于创建图形用户界面 (GUI)。它提供了各种小部件,允许用户与程序交互。其中一个小部件是 Entry 小部件,用于接受用户的单行文本输入。在使用 Tkinter 时,您可能会遇到需要从循环中访问 Entry 小部件中输入的值的情况。在本文中,我们将探讨实现此目的的不同方法。
Tkinter 提供了多种获取 Entry 小部件值的方法,但当需要从循环中获取值时,挑战在于正确管理程序流程。以下是一些可以有效解决此问题的策略:
使用 StringVar - 一种方法是将 StringVar 与 Entry 小部件关联。StringVar 是一个 Tkinter 变量类,专门用于保存字符串值。您可以创建一个 StringVar 对象,将其设置为 Entry 小部件的 textvariable,并在需要时访问其值。以下是一个示例:
示例
import tkinter as tk
def process_entries(entries):
for entry in entries:
value = entry.get()
# Process the value
print(value)
def main():
root = tk.Tk()
root.title("Getting the Tkinter Entry from a Loop using StringVar")
root.geometry("720x250")
# Create Entry widgets
entries = []
for i in range(5):
var = tk.StringVar()
entry = tk.Entry(root, textvariable=var)
entry.pack()
entries.append(var)
# Create a button to trigger processing
button = tk.Button(root, text="Process", command=lambda: process_entries(entries))
button.pack()
root.mainloop()
if __name__ == "__main__":
main()
在此示例中,我们创建了一个名为 entries 的 StringVar 对象列表,以保存 Entry 小部件中输入的值。

输出
当单击“处理”按钮时,将调用 process_entries() 函数,该函数遍历 entries 列表并使用每个 StringVar 的 get() 方法检索值。
Hi This is Tutorialspoint website Check for all the technical topics
使用回调函数 - 另一种方法是使用回调函数来检索 Entry 小部件中输入的值。当您希望在用户输入时动态更新值时,这很有用。以下是一个示例:
示例
import tkinter as tk
def process_entry(entry):
value = entry.get()
# Process the value
print(value)
def main():
root = tk.Tk()
root.title("Getting the Tkinter Entry from a Loop using a callback function")
root.geometry("720x250")
# Create Entry widgets
for i in range(5):
entry = tk.Entry(root)
entry.pack()
# Associate the callback function with the Entry widget
entry.bind("<FocusOut>", lambda event, e=entry: process_entry(e))
root.mainloop()
if __name__ == "__main__":
main()
在此示例中,我们在循环中创建 Entry 小部件,并将 <FocusOut> 事件绑定到每个 Entry。

输出
当 Entry 小部件失去焦点时(即,当用户单击其外部时),将触发该事件。回调函数 process_entry() 将使用相应的 Entry 小部件作为参数调用,允许我们使用 get() 方法检索其值。
Hi this is Tutorialspoint website
将 Entry 小部件存储在列表或字典中 - 如果您事先知道需要的 Entry 小部件的数量,则可以将它们存储在列表或字典中,以便以后访问它们。以下是一个使用列表的示例:
示例
import tkinter as tk
def process_entries(entries):
for key, entry in entries.items():
value = entry.get()
# Process the value
print(f"{key}: {value}")
def main():
root = tk.Tk()
root.title("Storing Tkinter Entry Widgets in a list or dictionary")
root.geometry("720x250")
# Create Entry widgets and store them in a dictionary
entries = {}
for i in range(5):
key = f"Entry {i+1}"
entry = tk.Entry(root)
entry.pack()
entries[key] = entry
# Create a button to trigger processing
button = tk.Button(root, text="Process", command=lambda: process_entries(entries))
button.pack()
root.mainloop()
if __name__ == "__main__":
main()
在此版本中,我们在循环中创建 Entry 小部件,并将它们存储在名为 entries 的字典中。每个 Entry 小部件都与一个唯一的键(例如,“Entry 1”、“Entry 2”)关联,用于识别目的。

输出
当单击“处理”按钮时,将调用 process_entries() 函数,该函数遍历字典并使用每个 Entry 小部件的 get() 方法检索值。然后打印或处理相应的键值对。
Entry 1: Hi Entry 2: this Entry 3: is Entry 4: tutorialspoint Entry 5: webstite
结论
这些是在循环中获取 Tkinter Entry 小部件中输入值的一些方法。根据应用程序的复杂性和特定需求,您可以选择最适合您需求的方法。请记住,正确管理程序流程并处理任何必要的事件绑定或回调函数,以确保流畅的用户体验。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP