鱼C论坛

 找回密码
 立即注册
查看: 1585|回复: 1

TK中 Tk.String() 不能实时传递的

[复制链接]
发表于 2021-3-1 14:04:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬:
我用TK界面写了个,随机出数学题,然后可以回答后自动判断结果的小程序。现在遇到问题,前面出题 排版都实现了,但是我再entry中回答后,好像结果不能被判断到。
问题是,我在 entry的 textvariable属性中加了变量。看上去 好像 判断还是空值。 实在没办法,真的是新手卡了我半个月,请大佬帮忙给看看。

# TK界面随机产生数学题

import openpyxl

import random
import tkinter as tk
from tkinter.filedialog import askdirectory

main = tk.Tk()
main.title ("随机出数学题")

group = tk.LabelFrame (main ,text ='选择出题类型',padx =5 ,pady =5)
group.grid(row=1,column=0)

vv= tk.IntVar()
r1 = tk.Radiobutton(group, text="加减法", variable=vv, value=1).grid(row=2,column=0)
r2 = tk.Radiobutton(group, text="乘法", variable=vv, value=2).grid(row=2,column=1)
r3 = tk.Radiobutton(group, text="整除法", variable=vv, value=3).grid(row=2,column=2)

v1 = tk.StringVar()
g2 = tk.LabelFrame (main ,text ='选择最小值' ,padx =5 ,pady =5)
g2.grid(row=3,column=0)
e1 = tk.Entry(g2,textvariable=v1).grid(row=3,column=1)

v2 = tk.StringVar()
g3 = tk.LabelFrame (main ,text ='选择最大值' ,padx =5 ,pady =5)
g3.grid(row=4,column=0)
e2 = tk.Entry(g3,textvariable=v2).grid(row=4,column=1)


lista = []  #存储题目
listb =[]   #存储答案
listll =[]  #存储题目
liste= []   #存储entry名字
ans = []    #存储entry结果
ansf=[]
listl =[]   #存储结果label名字
fed= []     #存储结果对应标签的textvariable值


def fun():
    main1 =tk.Tk()               #生产新的界面
    main1.title ('数学计算题')
    s =int(v1.get())
    a =int( v2.get())
    qty =1
    for i in range (0,50):
        ans1 ='a'+str(i)
        ee = "e" + str(i)
        ll = "l" + str(i)
        lll = "ll"+str(i)
        fed1 ='fed'+str(i)
        liste.append(ee)
        listl.append(ll)
        listll.append(lll)
        ans.append(ans1)
        fed.append(fed1)
   
    print (ans)
        


    if vv.get() == 1 :  #50道随机加减法
        while qty <=50:
            qty+=1
            c=int(random.randint(s,a))
            f=int(random.randint(s,a))
            jz=random.randint(0,1)
            if jz>=0.5:
                test = ("%d.   %d+%d = "%(qty-1,c,f))
                res = c+f
               
               
        
            else:
                if c>= f:
                    test = ("%d.   %d-%d = "%(qty-1,c,f))
                    res =c-f
                           

                else:
                    test = ("%d.   %d-%d = "%(qty-1,f,c))
                    res = f-c
                    
            lista.append(test)
            listb.append(res)


        com3= tk.Button(main1,text = '提交结果',command = check)
        com3.grid(row = 0,column = 2)


        
    for qq in range (0,50):
        ans[qq] =tk.StringVar()
        listll[qq] = tk.LabelFrame(main1, text = lista[qq],font=("微软雅黑", 13))
        listll[qq].grid(row = qq//5+1,column= qq%5)
        liste[qq] = tk.Entry (listll[qq],textvariable= ans[qq]).pack()
   
    main1.mainloop()



def check():

   
    fb=[]
    for aas in range (0,50):
        
        ans11 =ans[aas].get()
        print(ans11)
        
        if ans11 ==listb[aas]:

            fed[aas]='正确'

        else:
            fed[aas]='错误'
               

            listl[aas] = tk.Label(listll[aas],text=fed[aas]).pack()

    print (fed)

   

com2 =tk.Button( main ,text ='出题',width=10,command =fun)
com2.grid (row =0 ,column =0)   


main.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-1 19:28:55 | 显示全部楼层
  1. import openpyxl

  2. import random
  3. import tkinter as tk
  4. from tkinter.filedialog import askdirectory
  5. main = tk.Tk()
  6. main.title ("随机出数学题")

  7. group = tk.LabelFrame (main ,text ='选择出题类型',padx =5 ,pady =5)
  8. group.grid(row=1,column=0)

  9. vv= tk.IntVar()
  10. r1 = tk.Radiobutton(group, text="加减法", variable=vv, value=1).grid(row=2,column=0)
  11. r2 = tk.Radiobutton(group, text="乘法", variable=vv, value=2).grid(row=2,column=1)
  12. r3 = tk.Radiobutton(group, text="整除法", variable=vv, value=3).grid(row=2,column=2)

  13. v1 = tk.StringVar()
  14. g2 = tk.LabelFrame (main ,text ='选择最小值' ,padx =5 ,pady =5)
  15. g2.grid(row=3,column=0)
  16. e1 = tk.Entry(g2,textvariable=v1).grid(row=3,column=1)

  17. v2 = tk.StringVar()
  18. g3 = tk.LabelFrame (main ,text ='选择最大值' ,padx =5 ,pady =5)
  19. g3.grid(row=4,column=0)
  20. e2 = tk.Entry(g3,textvariable=v2).grid(row=4,column=1)


  21. lista = []  #存储题目
  22. listb =[]   #存储答案
  23. listll =[]  #存储题目
  24. liste= []   #存储entry名字
  25. ans = []    #存储entry结果
  26. ansf=[]
  27. listl =[]   #存储结果label名字
  28. fed= []     #存储结果对应标签的textvariable值


  29. def fun():
  30.     main1 = tk.Toplevel()           #生产新的界面
  31.     sb = tk.Scrollbar(main1)
  32.     main1.title('随机数学题')
  33.     s =int(v1.get())
  34.     a =int( v2.get())
  35.     qty =1
  36.     for i in range (0,50):
  37.         ans1 ='a'+str(i)
  38.         ee = "e" + str(i)
  39.         ll = "l" + str(i)
  40.         lll = "ll"+str(i)
  41.         fed1 ='fed'+str(i)
  42.         liste.append(ee)
  43.         listl.append(ll)
  44.         listll.append(lll)
  45.         ans.append(ans1)
  46.         fed.append(fed1)
  47.     print (ans)
  48.         


  49.     if vv.get() == 1 :  #50道随机加减法
  50.         while qty <=50:
  51.             qty+=1
  52.             c=int(random.randint(s,a))
  53.             f=int(random.randint(s,a))
  54.             jz=random.randint(0,1)
  55.             if jz>=0.5:
  56.                 test = ("%d.   %d+%d = "%(qty-1,c,f))
  57.                 res = c+f
  58.                
  59.                
  60.         
  61.             else:
  62.                 if c>= f:
  63.                     test = ("%d.   %d-%d = "%(qty-1,c,f))
  64.                     res =c-f
  65.                            

  66.                 else:
  67.                     test = ("%d.   %d-%d = "%(qty-1,f,c))
  68.                     res = f-c
  69.                     
  70.             lista.append(test)
  71.             listb.append(res)


  72.         com3= tk.Button(main1,text = '提交结果',command = check)
  73.         com3.grid(row = 0,column = 2)


  74.         
  75.     for qq in range (0,50):
  76.         ans[qq] =tk.StringVar()
  77.         listll[qq] = tk.LabelFrame(main1, text = lista[qq],font=("微软雅黑", 13))
  78.         listll[qq].grid(row = qq//5+1,column= qq%5)
  79.         liste[qq] = tk.Entry (listll[qq],textvariable= ans[qq]).pack()
  80.     main1.mainloop()



  81. def check():

  82.    
  83.     fb=[]
  84.     for aas in range (0,50):
  85.         
  86.         ans11 =ans[aas].get()
  87.         if ans11 == '':
  88.             ans11 = 0
  89.         print(ans11)
  90.         
  91.         if int(ans11) ==int(listb[aas]):

  92.             fed[aas]='正确'

  93.         else:
  94.             fed[aas]='错误'
  95.                

  96.         listl[aas] = tk.Label(listll[aas],text=fed[aas]).pack()

  97.     print (fed)

  98.    

  99. com2 =tk.Button( main ,text ='出题',width=10,command =fun)
  100. com2.grid (row =0 ,column =0)   


  101. main.mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表