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

使用Python Tkinter开发问答游戏时,无法从Entry获取玩家名称

解决Tkinter Entry组件获取玩家名称的问题

问题分析

你遇到的两个问题核心都是对Tkinter Entry组件的get()方法使用时机和方式理解有误:

问题1:直接添加Entry对象到列表

直接把player1、player2这些Entry对象加入列表,打印的自然是组件实例而非用户输入的文本——因为你存储的是组件本身,不是用户输入的内容。

问题2:提前调用get()导致空字符串

你在创建Entry后立即执行player1.get(还遗漏了方法调用的括号),此时用户还未输入任何内容,因此拿到的是空值;同时你赋值的是方法本身,不是调用方法后得到的输入结果。

正确解决方案

核心逻辑是在用户点击保存按钮时,再调用Entry的get()方法获取实时输入内容,而非提前获取或存储组件对象。

修改后的完整代码如下:

import tkinter as tk

WIDTH = 1600
HEIGHT = 800

names = []

win = tk.Tk()
win.title('game')
win.geometry(f"{WIDTH}x{HEIGHT}")
win.attributes('-fullscreen', True)

def settings():
    def save():
        # 点击保存时才获取输入框的实时内容
        player1_name = player1.get()
        player2_name = player2.get()
        # 清空原有列表并添加新名称
        names.clear()
        names.append(player1_name)
        names.append(player2_name)
        print(names)
        # 按需销毁组件,可根据业务逻辑调整
        for widget in win.winfo_children():
            widget.destroy()
    
    # 重命名变量避免与函数名冲突
    settings_frame = tk.Frame(win, width=WIDTH, height=HEIGHT)
    settings_frame.pack()   
    
    name_lab = tk.Label(settings_frame, font=('arial', 20), text='Choose your names')
    name_lab.grid(row=0, column=1)
    
    player1_lab = tk.Label(settings_frame, font='arial', text='Input name of player 1:')
    player1_lab.grid(row=2, column=0)
    
    player1 = tk.Entry(settings_frame, font='arial')
    player1.grid(row=3, column=0)
    
    player2_lab = tk.Label(settings_frame, font='arial', text='Input name of player 2:')
    player2_lab.grid(row=2, column=2)
   
    player2 = tk.Entry(settings_frame, font='arial')
    player2.grid(row=3, column=2)
    
    name_save = tk.Button(settings_frame, font='arial', text='Save', command=save)
    name_save.grid(row=4, column=1)

settings()

win.mainloop()

关键修正点

  • 将get()方法的调用时机移到save()函数内部,确保获取的是用户点击保存时的最新输入
  • 修正拼写错误:Imput改为Input,Choose you names改为Choose your names
  • 重命名原settings变量为settings_frame,避免与外层函数名冲突
  • 使用f-string简化窗口尺寸的字符串拼接逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:05:02