微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

tkinter.ttk 树视图似乎无法识别创建的列名

如何解决tkinter.ttk 树视图似乎无法识别创建的列名

我在尝试使用 ttk.Treeview 显示文件中的数据时遇到了一个棘手的问题。我从来没有真正接触过工作的数据部分,因为我似乎无法设置 Treeview 结构。

出于某些原因,我想从列名列表中创建 Treeview 列,而这些列名又是从包含结构信息的元组元组获取的。创建列似乎可以正常工作,如此测试程序所示。但是,当我尝试为列创建标题时,我收到一条消息,指出我分配的列名称未被识别为标识符。

尽管文档中有这一点:

列标识符采用以下任何一种形式:

  • 列选项列表中的符号名称
  • 整数 n,指定第 n 个数据列。
  • #n 形式的字符串,其中 n 是整数,指定第 n 个显示列。

在这方面翻阅了无数示例、教程和参考页面——这是一个基本的 Treeview 操作,但他们似乎都说我正在做的事情应该有效。它不是。怎么了?

这是在 linux 系统中使用 python 3.9.4,tkinter 版本为 8.6.10。

这是一个测试程序:

from tkinter import *
from tkinter import ttk as ttk

# list of data fields and column widths
field_reference = (('DateTime',20),('Rate',10),('Amp1',15),('Amp2',('Residual',20))

#create a tkinter app
app = Tk()
app.title("Treeview Demo") 
app.geometry('700x400+100+100')
app.columnconfigure(0,weight=1)
app.rowconfigure(0,weight=1)

# create a frame holding a treeview 
fileDataFrame = ttk.Frame(app,padding="3 3 12 12")
fileDataFrame.grid(column=0,row=0,sticky=(N,W,E,S))
fDF_Title = ttk.Label(fileDataFrame,text="Data")
fDF_Title.grid(column=0,sticky=(W,N))

# set up treeview for the data tree
fileDataTree = ttk.Treeview(fileDataFrame,show='headings')
# specify a column for each of the fields in the data file
column_list=[]
for item in field_reference:
    column_list.append(item[0])

fileDataTree.columns = column_list

fileDataTree.heading('#0',text='')

print("At line 38 fileDataTree columns are: {}".format(fileDataTree.columns))

for item in field_reference:
    fileDataTree.heading(item[0],text=item[0])
    fileDataTree.column(item[0],width=item[1])

fileDataTree.grid(column=0,row=1,sticky='W,N')    

app.mainloop()

输出

At line 38 fileDataTree columns are: ['DateTime','Rate','Amp1','Amp2','Residual']
Traceback (most recent call last):
  File "/home/michael/src/tkinter/./demo_ttktree.py",line 41,in <module>
    fileDataTree.heading(item[0],text=item[0])
  File "/usr/lib64/python3.9/tkinter/ttk.py",line 1299,in heading
    return _val_or_dict(self.tk,kw,self._w,'heading',column)
  File "/usr/lib64/python3.9/tkinter/ttk.py",line 298,in _val_or_dict
    res = tk.call(*(args + options))
_tkinter.TclError: Invalid column index DateTime

感谢任何帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。