簡體   English   中英

如何將包含空格的字符串添加到 Tkinter Treeview 列

[英]How to add a string that contains whitespace to a Tkinter Treeview column

我使用 tree.insert 方法將數據插入到 treeview 小部件中。 在 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()

values期望一個可迭代對象,因此當您將string傳遞給它時,它往往會做一些奇怪的事情。 在代碼中修復它的最簡單方法是將其作為元組傳遞:

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

這不是一項大任務,只是在空格前加一個反斜杠,例如:-

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

它會在您的 GUI 中向您顯示空格,因為 '123\\ 456' 將被視為類型 'list' 中的單個元素。

在這里給出的兩個答案中,我傾向於不同意將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(" ", "\ "))

...就像一網打盡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM