【问题标题】:How to add a string that contains whitespace to a Tkinter Treeview column如何将包含空格的字符串添加到 Tkinter Treeview 列
【发布时间】:2019-07-23 14:43:18
【问题描述】:

我使用 tree.insert 方法将数据插入到树视图小部件中。在 values 选项下,我指定了获取数据的字符串变量。如果字符串包含空格,则字符串将被分解为较小的字符串,这些字符串被放入列表中。如何在不截断第一个空格的情况下将数据添加到树视图列中?

谢谢。

import tkinter as tk
from tkinter import ttk
app = tk.Tk()
tree = ttk.Treeview(app)
tree.grid(row=0, column=0)
tree.config(columns=('Value1'), selectmode='browse')
tree.column('#0', width=150, minwidth=10, stretch=tk.YES)
tree.column('Value1', width=80, minwidth=10, stretch=tk.YES)
tree.heading('#0', text='Name', anchor=tk.W)
tree.heading('Value1', text='Value', anchor=tk.W)
data = [['John', '123456'], ['Mary', '123 456'], ['Edward', 'abcdef'], ['Lisa', 'ab cd ef']]
for item in data:
    print(item[1], type(item[1]))
    tree.insert("", 'end', item[0], text=item[0], values=item[1])
    print(tree.item(item[0])['values'], type(tree.item(item[0])['values']))
app.mainloop()

【问题讨论】:

    标签: python tkinter treeview


    【解决方案1】:

    这不是一项大任务,只需在空格前加一个反斜杠,例如:-

    data = [['John', '123456'], ['Mary', '123\ 456'], ['Edward', 'abcdef'], ['Lisa', 'ab\ cd\ ef']]
    

    它将在您的 GUI 中显示空白,因为“123\ 456”将被视为“列表”类型中的单个元素。

    【讨论】:

    • 我的财富。编码愉快。
    【解决方案2】:

    values 需要一个可迭代对象,因此当您将 string 传递给它时,它往往会做一些奇怪的事情。在代码中修复它的最简单方法是将其作为元组传递:

    tree.insert("", 'end', item[0], text=item[0], values=(item[1],))
    

    【讨论】:

      【解决方案3】:

      在这里给出的两个答案中,我倾向于不同意设置 values=item[1]values=(item[1]),因为我仍然遇到 Treeview 在空格周围分割的问题。

      我尝试了转义解决方案,效果很好。如果可以的话,我会更进一步,将您的 values=(item[1]) 更改为 values=(item[1].replace(" ", "\ ")),这样您的线路就会显示为::

      tree.insert("", 'end', item[0], text=item[0], values=(item[1].replace(" ", "\ "))
      

      ...就像一个包罗万象的东西

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 2023-02-04
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 2013-10-18
        • 2012-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多