代码之家  ›  专栏  ›  技术社区  ›  craigB

Tkinter Treeview调用找不到项目

  •  1
  • craigB  · 技术社区  · 2 年前

    我在树视图中有一些项目包含反斜杠。这通常很好,但是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

    0 回复  |  直到 2 年前
        1
  •  0
  •   nrhoopes    2 年前

    我设法使用原始字符串和一个单独的变量来显示它。不过我认为它可以被改编。

    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')
    
    推荐文章