python-3.x - tkinter.ttk treeview 似乎无法将列名识别为已创建
问题描述
我在尝试使用 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',15),
('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, row=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
任何帮助表示赞赏。
解决方案
推荐阅读
- android - android Q显示图片
- python - Scrapy登录不正确
- android - 使用 Google Play 发布私有 android 应用
- python - Django:save() 缺少 1 个必需的位置参数:'self'
- javascript - 当我使用 Jquery 附加 Elemts 时,CSS 不起作用
- node.js - 错误:架构中已存在字段“My.x”。也不能在此类型扩展中定义
- r - 在集群上运行 R 函数 jags
- c# - 当运行两个或多个并发会话时,C# 应用程序会破坏 cookie 数据
- python - 具有大量零的数据集的建模思路
- excel - 我可以在 vlookup 中使用动态表数组吗?