如何在Gtk中展示嵌套列表数据并去除括号引号等多余符号
问题原因
你目前的实现直接将元组类型的data传给了Gtk.Label的label参数,Gtk会自动调用元组的字符串序列化方法,所以会把Python语法里的括号、引号、逗号都作为内容展示出来。
修复方案
只需要修改ListBoxRowWithData类的实现,先把元组内的元素按你需要的格式拼接成纯字符串,再传给Label即可。
最简实现(空格分隔)
如果你只需要去除多余符号,所有内容在同一行用空格分隔,可直接用如下代码:
class ListBoxRowWithData(Gtk.ListBoxRow): def __init__(self, data): super().__init__() self.data = data # 把元组所有元素转字符串后用空格拼接,也可以替换为你想要的分隔符如" | " show_text = " ".join(str(item) for item in data) self.add(Gtk.Label(label=show_text))
优化实现(列对齐)
如果想要展示效果更规整,列与列对齐,可以用格式化字符串给每个字段分配固定宽度:
class ListBoxRowWithData(Gtk.ListBoxRow): def __init__(self, data): super().__init__() self.data = data # 按字段类型分配固定宽度,<表示左对齐,数字表示占位宽度,.1f表示保留1位小数 show_text = f"{data[0]:<12} {data[1]:<4.1f} {data[2]:<6} {data[3]}" self.add(Gtk.Label(label=show_text))
内容的提问来源于stack exchange,提问作者greenbug
相关产品推荐
相关产品推荐

