我在树视图中有一些项目包含反斜杠。这通常很好,但是tk.call似乎会强制删除这些反斜杠。有什么办法可以防止这种情况发生吗?
from tkinter import * from tkinter.ttk import * root = Tk() tv = Treeview(root) iid = "aa\\bb" tv.insert("", 'end', iid=iid, text=iid) tv.tk.call(tv, "tag", "add", "new_tag", iid) tv.pack() root.mainloop()
_tkinter。TclError:找不到项目ab
Python 3.11.1
我设法使用原始字符串和一个单独的变量来显示它。不过我认为它可以被改编。
import tkinter as tk from tkinter.ttk import Treeview root = tk.Tk() tv = Treeview(root) iid = "aa\\bb" iid_raw = r"aa\\bb" print(iid) tv.insert("", 'end', iid=iid, text=iid) tv.tk.call(tv, "tag", "add", "new_tag", iid_raw) tv.pack() root.mainloop()
将iid编码为“raw”也很有效,这可能会更加动态,因为您只需要设置iid:
iid = "aa\\bb" iid_raw = iid.encode('unicode_escape')