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

Python tkinter如何访问函数内Entry的值并延迟执行依赖代码

问题原因

你代码的执行顺序是先运行全局位置的print(vm),再启动tk主循环等待用户操作,这时候vm还没被entbm函数赋值,自然会报未定义错误。要实现"等vm定义完成再执行操作",只需要把依赖vm的逻辑放到entbm函数里,等用户点击确认按钮、vm生成之后自动触发就行。

修正方案

  1. 删掉全局位置的print(vm),把它移到entbm函数里vm赋值完成的位置
  2. 如果后续还有其他依赖vm的业务逻辑,也都可以放在这个位置执行

调整后的核心代码示例

import tkinter as tk

# 补全rgb_hack函数示例,可替换为你自己的实现
def rgb_hack(rgb):
    return "#%02x%02x%02x" % rgb  

def open2():
    global top2
    top2 = tk.Toplevel()
    top2.title('second window')
    lbl2 = tk.Label(top2, text='question 1')
    lbl2.place(y=50, x=150)
    global ent2
    ent2 = tk.Entry(top2, bd=0, bg=rgb_hack((255, 255, 255)))
    ent2.place(y=100, x=150)
    top2.config(bg=rgb_hack((163, 236, 165)))
    top2.geometry("450x250")
    btnbm = tk.Button(top2, text='ok', command=entbm).pack()
    root.withdraw()

# 补全open1函数示例,可替换为你自己的实现
def open1():
    global top2
    top2 = tk.Toplevel()
    top2.title('second window')
    lbl2 = tk.Label(top2, text='question 2')
    lbl2.place(y=50, x=150)
    global ent2
    ent2 = tk.Entry(top2, bd=0, bg=rgb_hack((255, 255, 255)))
    ent2.place(y=100, x=150)
    top2.config(bg=rgb_hack((163, 236, 165)))
    top2.geometry("450x250")
    btnbm = tk.Button(top2, text='ok', command=entbm).pack()
    root.withdraw()

def entbm():
    global vm
    vm = ent2.get()
    vm = vm.replace(' ', '').lower()
    top2.destroy()
    # 原全局print移到此处,vm赋值完成后自动执行
    print(vm)
    # 后续答题判断、结果展示等依赖vm的逻辑都可以放在此处
    return vm

root = tk.Tk()
root.title('first window')
root.geometry("450x250")
root.config(bg=rgb_hack((163, 236, 165)))
btn1 = tk.Button(root, text="to question 1", command=open1, bd=0, height=2, width=20, bg=rgb_hack((255, 255, 255)))
btn1.place(y=50, x=150)
btn2 = tk.Button(root, text="to question 2", command=open2, bd=0, height=2, width=20, bg=rgb_hack((255, 255, 255)))
btn2.place(y=100, x=150)

tk.mainloop()

可选优化

如果你不想使用过多全局变量,可以用类来封装整个答题流程,把vm、窗口组件都做成类的属性,代码可读性和可维护性会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:24:02