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

如何在Python Tkinter中通过函数永久修改列表并查看更新结果?

问题原因及解决方法

为什么输出始终是空列表?

你的代码里print(names)是在window.mainloop()之前执行的——这时候Tkinter的GUI窗口还没启动,用户完全没机会点击按钮输入内容添加到列表里,所以打印的自然是初始状态的空列表[]。

另外,就算你点击按钮调用change()函数成功修改了names列表,也没有任何代码去输出更新后的列表内容,所以你根本看不到修改后的结果。

修复方案

方案1:修改列表后立即打印

直接在change()函数里添加打印逻辑,每次点击按钮添加内容后,自动输出当前列表:

from tkinter import *

window = Tk()

names = []

ent = Entry(window)
ent.pack()

def change():
    names.append(ent.get())
    print(names)  # 添加这行,每次修改后打印列表

btn = Button(window, command=change)
btn.pack()

window.mainloop()

方案2:新增按钮查看当前列表

如果不想每次添加都打印,可以加一个专门的按钮,点击后再输出列表内容:

from tkinter import *

window = Tk()

names = []

ent = Entry(window)
ent.pack()

def change():
    names.append(ent.get())

def show_list():
    print(names)  # 点击按钮时打印当前列表

btn_add = Button(window, text="添加", command=change)
btn_add.pack()

btn_show = Button(window, text="查看列表", command=show_list)
btn_show.pack()

window.mainloop()

方案3:用GUI组件显示列表(更直观)

如果想在窗口里直接看到列表内容,而非控制台输出,可以用Text组件展示:

from tkinter import *

window = Tk()

names = []

ent = Entry(window)
ent.pack()

# 用于显示列表的文本框
display = Text(window, height=5, width=30)
display.pack()

def change():
    names.append(ent.get())
    # 清空文本框并重新插入当前列表内容
    display.delete(1.0, END)
    display.insert(END, "\n".join(names))

btn = Button(window, text="添加", command=change)
btn.pack()

window.mainloop()

内容的提问来源于stack exchange,提问作者tmabraham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:55:29