如何从文本小部件中删除大括号

How to remove curly braces from a text widget

我想在文本小部件中列出 frame.conifg 的列表。应从文本中删除字符“{}”。有人可以向我解释一下,为什么不能使用以下代码删除它?

liste  = frame_01.config()

for item in liste:
       texteditor.insert(tk.INSERT, (item.strip("{}"), ":", liste[item], "\n"))

列表如下所示: enter image description here

使用此代码,我收到以下错误消息: texteditor.insert(tk.INSERT, (item.translate(str.maketrans('', '', '{}')), ":", self.mainwindow.liste[项目], "\n")) 类型错误:列表索引必须是整数或切片,而不是 str

for item in liste:
           texteditor.insert(tk.INSERT, (item.translate(str.maketrans('', '', '{}')), ":", liste[item], "\n"))

花括号不在数据中,它们仅由 tkinter 添加,因为您将列表传递给需要字符串的函数。 Tcl(tkinter 使用的嵌入式语言)以不同于 python 的方式对列表进行编码,方法是在包含空格或制表符的列表元素周围添加大括号。

解决方案是显式格式化数据而不是试图让 Tcl 格式化数据。一种方法是这样做:

for item in liste:

    # convert the list of values to a list of strings
    values = [str(x) for x in liste[item]]

    # explicitly join the list of strings to create a single string
    str_values = " ".join(values)

    # insert the string into the text widget
    textedit.insert("end", f"{item}: {str_values}\n")