将列表打印到 Tkinter Text 控件


在使用 Tkinter 在 Python 中创建图形用户界面 (GUI) 时,通常希望以用户友好的格式显示数据。一种方法是将项目列表打印到 Tkinter Text 控件,该控件允许您显示列表,每个项目位于单独的行上。在本文中,我们将介绍如何将列表打印到 Tkinter Text 控件以及一些格式化输出的技巧。

创建 Tkinter Text 控件

在将列表打印到 Tkinter Text 控件之前,我们需要创建该控件本身。以下是一些创建简单 Text 控件的示例代码:

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("Creating a Tkinter Text Widget")

txt_output = Text(root, height=5, width=30)
txt_output.pack(pady=30)

root.mainloop()

输出

运行此代码时,您将看到如下所示的空白 Text 控件,它有足够的空间显示 5 行文本,每行最大宽度为 30 个字符。

将列表打印到 Tkinter Text 控件

拥有 Text 控件后,我们可以将项目列表打印到其中。最简单的方法是使用 for 循环遍历列表,并使用 Text 控件的 **insert()** 方法将每个项目添加到新行。以下是将水果名称列表打印到 Text 控件的示例代码:

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("Printing a List to the Tkinter Text Widget")

my_list = ["apple", "banana", "pineapple", "mango"]

txt_output = Text(root, height=5, width=30)
txt_output.pack(pady=30)

for item in my_list:
    txt_output.insert(END, item + "\n")

root.mainloop()

输出

运行此代码后,Text 控件将显示四个水果名称,每个名称位于单独的行上:

格式化输出

将列表打印到 Tkinter Text 控件是一项简单的任务,但您可以通过多种方式格式化输出以使其更具视觉吸引力。

向列表添加标题或标题

如果您要打印的项目列表具有特定的含义或用途,您可能希望向 Text 控件添加标题或标题,以便用户清楚地了解其含义。您可以使用 insert() 方法在列表本身之前向控件顶部添加一行文本。以下是一个示例:

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("Adding a Title or Heading to the List")

my_list = ["apple", "banana", "pineapple", "mango"]

txt_output = Text(root, height=6, width=30)
txt_output.pack(pady=30)

txt_output.insert(END, "List of Fruits\n")
for item in my_list:
   txt_output.insert(END, item + "\n")

root.mainloop()

输出

现在看看 **输出** 窗口:

使用格式区分项目

有时,以一种使区分列表中项目更容易的方式格式化输出非常有用。一种方法是使用不同的文本样式(例如粗体或斜体)来突出显示某些单词或短语。

在此示例中,我们使用“*”字符在单词“banana”前面添加一个项目符号,并使用自定义粗体标签对其进行格式化。我们在代码底部使用 tag_configure() 方法定义标签,该方法指定字体样式和粗细。

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("Use Formatting to Distinguish Between Items")

my_list = ["apple", "banana", "pineapple", "mango"]

txt_output = Text(root, height=6, width=30)
txt_output.pack(pady=30)

txt_output.insert(END, "List of Fruits\n\n")
for item in my_list:
   if item == "banana":
      txt_output.insert(END, "* " + item + "\n", "bold")
   else:
      txt_output.insert(END, "- " + item + "\n")

txt_output.tag_configure("bold", font=("Arial", 10, "bold"))
root.mainloop()

输出

执行后,您将获得以下 **输出** 窗口:

使用缩进显示层次结构

如果您的列表具有层次结构,您可能希望使用缩进来说明哪些项目从属于其他项目。您可以通过在应缩进的每个项目前面添加空格或制表符来实现此目的。

在此示例中,我们创建了一个列表,其中包含两个主要类别(水果和蔬菜),每个类别下有三个项目。我们在应缩进的每个项目前面添加两个空格,这使得清楚哪些项目属于每个类别。

from tkinter import *

root = Tk()
root.geometry("720x200")
root.title("Use Indentation to Show Hierarchy")

my_list = ["fruits",
   "  - apple", "  - banana", "  - pineapple",
   "vegetables",
   "  - cabbage", "  - tomato", "  - onion"]

txt_output = Text(root, height=8, width=30)
txt_output.pack(pady=30)

for item in my_list:
   txt_output.insert(END, item + "\n")

root.mainloop()

输出

执行后,您将看到以下输出窗口:

结论

总之,将列表打印到 Tkinter Text 控件是一项简单的任务,可用于以用户友好的格式显示数据。通过使用 **insert()** 方法和 for 循环,您可以将列表中的每个项目打印到单独的行上。使用一些额外的格式化技术,例如添加标题、使用不同的文本样式或使用缩进,您可以使输出更具视觉吸引力,并且更容易理解。

更新于:2023年4月13日

8K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告