You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Tkinter中自定义表格组件遇显示问题求助

问题分析与解决方案

你的代码存在三个核心问题导致表格不显示:

  1. 从未调用表格生成函数:定义了table函数但没有执行,根本没创建表格控件
  2. 多余的self参数:table不是类方法,self参数无意义,会导致调用报错
  3. Frame放置位置错误:canvas.create_window(500,500)把Frame放在了Canvas可视区域外(Canvas尺寸为500x500,坐标(500,500)是右下角的边界点,Frame会被挤出画布)

修改后的完整代码

from tkinter import *

root = Tk()
root.geometry("500x500")

def clicked():
    print("clicked")

canvas = Canvas(root, height=500, width=500, background="blue")
canvas.pack()
  
frame = Frame(canvas, background="red")  # 把Frame的父组件设为Canvas更合理

def table(frame):
    for i in range(total_rows):
        for j in range(total_columns):
            e = Entry(frame, width=20, fg='blue', font=('Arial',16,'bold'))
            e.grid(row=i, column=j)
            e.insert(END, lst[i][j])


lst = [(1,'first','last',19),
       (2,'fname','lname',18),
       (3,'name','nameeee',20),
       (4,'tsrif','tsal',21),
       (5,'bobby','bobberson',21)]

total_rows = len(lst)
total_columns = len(lst[0])

# 调用表格生成函数
table(frame)

b = Button(canvas, text="test button", command=clicked)
b.place(x=10, y=10)

# 将Frame放在Canvas中心位置,anchor参数确保居中对齐
canvas.create_window(250, 250, window=frame, anchor=CENTER)

root.mainloop()

额外优化说明

  • 把Frame的父组件改为Canvas,逻辑上更合理(嵌入Canvas的组件父容器设为Canvas)
  • 添加anchor=CENTER参数,确保Frame在指定坐标处居中显示
  • 移除了table函数中多余的self参数,让函数可以正常调用

内容的提问来源于stack exchange,提问作者j.jam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:16:01