如何从文本小部件中删除大括号
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")
我想在文本小部件中列出 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")