我正在尝试将项目添加到构建基本 UI 的 Python 脚本中的 ttk.Treeview
实例。插入代码如下所示:
tree.insert(my_id,
'end',
todo_id,
text="Line " + str(line_num),
values=(str(todo_text), owner), # I have 2 cols, 'text' and 'owner'
tags=['#todo_entry'])
我发现在名为“text”的列中设置字符串 todo_text
时,Tkinter 在遇到特定字符串时会抛出错误:
_tkinter.TclError: 列表中不匹配的左括号
我唯一能想到的原因是,有问题的字符串包含花括号。这是它断开的字符串:
'//静态类属性 {//TODO,临时类'
无论我是否使用 todo_text
或 str(todo_text)
,这似乎都会发生。
文本字符串是否以某种方式被解析?我错过了什么?
最佳答案
Tkinter 的核心是 Tcl 解释器的包装器。对于 Tcl,花括号是特殊的,除非它们被转义。花括号是创建 Tcl 列表最常用的方法。如果您看到 unmatched open brace in list
,这是一个 Tcl 错误,与您的大括号不平衡有关。
对我来说这看起来像是一个 Tkinter 错误——tkinter 包装器在将数据传递给 Tcl 解释器之前错误地引用了数据。当您在大括号前面放置一个反斜杠时,它现在变成了一个有效的 Tcl 字符串,这就是您不再看到错误的原因。
这已在 python 错误跟踪器上报告为问题 #15861
关于python - 将项目添加到 ttk.Treeview 时出现“不匹配的左括号”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566299/