Tkinter Treeview多余列及SQLite数据对齐问题求助
Tkinter Treeview 列显示与SQLite数据对齐问题解决
问题描述
我正在学习Tkinter,开发一款客户信息管理的SQLite小型数据库应用,遇到两个问题:
- Treeview出现多余列,无法只显示指定的4列(Código、Nome、Telefone、Cidade)
- 从SQLite取出的信息显示在Treeview时,数据无法在对应列正确对齐
已尝试调整列宽、设置anchor=CENTER、检查数据中的多余空格或字符,问题仍存在。相关代码如下:
def lista_frame2(self): self.listaCli = ttk.Treeview(self.frame_2, height=3, columns=("col0", "col1", "col2", "col3")) self.listaCli.heading("#0", text="Código", anchor=CENTER) self.listaCli.heading("col1", text="Nome", anchor=CENTER) self.listaCli.heading("col2", text="Telefone", anchor=CENTER) self.listaCli.heading("col3", text="Cidade", anchor=CENTER) self.listaCli.column("#0", width=50, anchor=CENTER) self.listaCli.column("col1", width=50, anchor=CENTER) self.listaCli.column("col2", width=50, anchor=CENTER) self.listaCli.column("col3", width=60, anchor=CENTER) self.listaCli.place(relx= 0.025, rely= 0.05, relwidth= 0.92, relheight= 0.90) self.scrollLista = Scrollbar(self.frame_2, orient = 'vertical') self.listaCli.configure(yscroll=self.scrollLista.set) self.scrollLista.place(relx= 0.945, rely= 0.05, relwidth= 0.03, relheight= 0.90) self.listaCli.bind("<Double-1>", self.OnDoubleClick)
问题1:Treeview多余列的解决方法
Treeview的columns参数定义的是除默认#0列之外的额外列。你当前设置columns=("col0", "col1", "col2", "col3"),相当于在#0列之外新增4列(对应#1到#4),但只给#0、col1、col2、col3设置了标题,col0对应的#1列无标题,因此显示为空白多余列。
修正操作:
将columns参数改为("col1", "col2", "col3"),这样额外列仅3个,加上默认的#0列,正好对应你需要的4列:
self.listaCli = ttk.Treeview(self.frame_2, height=3, columns=("col1", "col2", "col3"))
问题2:SQLite数据与Treeview列对齐的解决方法
数据错位通常是因为插入Treeview的顺序与列定义不匹配,或是SQL查询返回的字段顺序和列对应不上,具体检查和修正如下:
- 插入顺序匹配:插入Treeview时,
text对应#0列(Código),values的元素需依次对应col1(Nome)、col2(Telefone)、col3(Cidade),例如:for row in cursor.fetchall(): codigo, nome, telefone, cidade = row self.listaCli.insert("", END, text=codigo, values=(nome, telefone, cidade)) - SQL查询字段顺序:从SQLite取数时,确保
SELECT的字段顺序为codigo, nome, telefone, cidade,保证返回的元组顺序与列对应。 - 清理不可见字符:若数据存在换行符、制表符等不可见字符,插入前用
strip()处理:values=(nome.strip(), telefone.strip(), cidade.strip())
验证步骤
- 修改
columns参数后重启程序,确认多余列消失 - 核对SQL查询和Treeview插入的字段顺序,确保一一对应
- 测试数据插入后的对齐效果
内容的提问来源于stack exchange,提问作者dugalvao01
相关产品推荐
相关产品推荐

