如何在Python的Tkinter中以表格形式展示字典数据?已尝试代码及TreeView无效
解决CustomTkinter展示世界杯冠军表格数据的问题
你可以使用CustomTkinter结合CTkTreeview来实现表格展示,以下是修正后的完整代码:
import customtkinter from customtkinter import CTkTreeview def display(): # 示例数据,实际使用你的data_dict data_dict = { "Brazil": [1958, 1962, 1970, 1994, 2002], "Germany": [1954, 1974, 1990, 2014], "Italy": [1934, 1938, 1982, 2006], "Argentina": [1978, 1986, 2022], "France": [1998, 2018], "Uruguay": [1930, 1950], "England": [1966], "Spain": [2010] } root2 = customtkinter.CTk() root2.title('View Results') root2.geometry('600x400') # 创建框架 new_frame = customtkinter.CTkFrame(root2) new_frame.pack(fill="both", expand=True, padx=10, pady=10) # 创建Treeview表格 tree = CTkTreeview(new_frame, columns=("Country", "Wins", "Years"), show="headings") # 设置表头和列宽 tree.heading("Country", text="国家") tree.heading("Wins", text="夺冠次数") tree.heading("Years", text="夺冠年份") tree.column("Country", width=150) tree.column("Wins", width=100, anchor="center") tree.column("Years", width=300) # 插入数据 for country in sorted(data_dict): win_count = len(data_dict[country]) win_years = ", ".join(map(str, data_dict[country])) tree.insert("", "end", values=(country, win_count, win_years)) # 表格布局 tree.pack(fill="both", expand=True) root2.mainloop() # 调用测试 display()
关键说明:
CTkTreeview是CustomTkinter适配的表格组件,风格和窗口统一- 通过
columns定义表格列,show="headings"隐藏默认空白首列 - 遍历排序后的国家列表插入数据,将年份列表转为逗号分隔的字符串
- 用
pack(fill="both", expand=True)让表格自适应窗口大小
如果你的CustomTkinter版本不支持CTkTreeview,可以替换为tkinter的ttk.Treeview,修改导入和创建部分即可:
import tkinter.ttk as ttk # 替换Treeview创建代码 tree = ttk.Treeview(new_frame, columns=("Country", "Wins", "Years"), show="headings")
内容的提问来源于stack exchange,提问作者pranay brahmbhatt
相关产品推荐
相关产品推荐

