python - 将项目添加到 ttk.Treeview 时出现“不匹配的左括号”错误

标签 python treeview tkinter

我正在尝试将项目添加到构建基本 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_textstr(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/

相关文章:

python - 如何为 tkinter 框架添加阴影?

Android与Python通信

python - 导入 cx_Oracle 模块时出错 [Python]

python - 如何使用装饰器来修改可变类变量?

python - 如何修复 Meta.fields 不能是字符串。你是不是想输入 : ('name' )

c# - 当 TreeView 失去焦点时,如何保留 KMLTreeView 项目 'selected'?

python - 操作系统错误 : cannot open resource

python - 如何让窗口中的滚动条起作用?

c# - 找到 TreeViewItem 来放置数据

c# - 用户选择子项后 TreeView 自动选择父项