关于#NameError: name 'x ‘is not defined#的问题,如何解决?

编辑了一个点名器一直报错
显示Traceback (most recent call last):
File "C:\天翼云盘下载\点名.py", line 13, in
ans=int(input(i+"请答题:"
NameError: name 'i' is not defined
这是完整的代码

img


试图找出错误,尝试改缩进也不对

import random
import time
import os
import tkinter
from tkinter import*
class tmp:
    i = '000'
    ans = '000'
def callback():
    i = tmp.i
    ans = input(i+"请答题: ")
    tmp.ans = ans
def func():
    things=[]#使用前请将things用姓名填充
    answers = {}
    for x in range(len(things)):
        i = random.sample(things,1)[0]
        tmp.i = i
        root=Tk()
        root.title("点名")
        root.geometry("300x120")
        root.resizable(0,0)
        btn = tkinter.Button(root,relief="solid",width=10,height=2,text='开始点名',cnf={},command=callback)
        btn.pack()
        btn = tkinter.Button(root,relief="solid",width=10,height=2,text='退出',command=root.destroy)
        btn.pack()
        answers[i] = tmp.ans
        root.mainloop()
    return answers
answers = func()
print(answers)

主要问题在于没有封装回调函数,所以应该把函数封装起来,如上callback所示。
其实我也不是很会玩tkinter,所以上面程序的输出会有一些小问题。

你为啥给他打引号呀

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^