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

Tkinter使用get()读取窗口整数问题:anzahl参数未定义排查

问题分析与解决方案

嘿,我一眼就揪出几个导致你报错的问题,咱们一个个捋清楚:

核心问题:过早获取输入值

你在窗口刚创建、用户还没来得及输入任何内容时,就执行了anzahl = int(lot.get())——这时候输入框是空的,lot.get()返回空字符串,转int直接报错;就算侥幸没报错,点击提交按钮时用的还是这个初始的无效值,根本不是用户后来输入的数字。

另外两个小坑

  • 你用了random.randint()但没导入random模块;
  • 调用tkMessageBox但没单独导入这个子模块(Python2里它属于Tkinter的一部分,需要显式导入);
  • 你的函数逻辑是循环弹出单个数字的提示框,但你想要的是4,20,40;这种合并结果,当前逻辑不符合需求。

修正后的完整代码

import Tkinter
import random
import tkMessageBox

window = Tkinter.Tk()

lot = Tkinter.Entry(window)
lot.pack()

def lotto():
    # 点击按钮时才读取输入框的最新内容
    try:
        anzahl = int(lot.get())
        # 收集所有随机数,避免多次弹窗
        results = []
        for i in range(anzahl):
            results.append(str(random.randint(1,45)))
        # 按要求格式拼接结果
        result_text = ",".join(results) + ";"
        tkMessageBox.showinfo("Result", result_text)
    except ValueError:
        # 处理用户输入非数字的情况
        tkMessageBox.showwarning("Error", "请输入有效的数字!")

submit = Tkinter.Button(window, text="Submit", command=lotto)
submit.pack()

window.mainloop()

关键修改说明

  • 把获取输入值的逻辑移到lotto函数内部,点击按钮时才读取用户输入的最新内容;
  • 增加异常处理,防止用户输入非数字导致程序崩溃;
  • 把随机数收集到列表中,最后拼接成你想要的数字,数字,数字;格式再弹窗展示;
  • 补全了缺失的random和tkMessageBox模块导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:06:13