鱼C论坛

 找回密码
 立即注册
查看: 1066|回复: 5

[已解决]想结合tk和字典做一个字典更新,但是失败了

[复制链接]
发表于 2020-4-30 14:34:07 | 显示全部楼层 |阅读模式

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

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

x
如题,可以达到的效果是用户输入名字后,自动查找他原来的分数,然后加上获得的分数再更新字典,可是报错了,请教一下怎么修改呢?
  1. import tkinter as tk

  2. dict1 = {'小白':8}  

  3. #在字典查找然后更新分数
  4. def add():
  5.     str1 = v1.get()
  6.     a = int(dict1.get(str1))
  7.     b = a + int(v2.get())
  8.     dict1.update(str1 = b)

  9. root=tk.Tk()
  10. v1=tk.StringVar()
  11. v2=tk.StringVar()

  12. tk.Label(root,text='请输入姓名:').grid(row=0,column=0)
  13. tk.Entry(root,textvariable=v1).grid(row=0,column=1)
  14. tk.Label(root,text='请输入分值:').grid(row=1,column=0)
  15. tk.Entry(root,textvariable=v2).grid(row=1,column=1)

  16. tk.Button(root,text = '完成',command = add).grid(row = 2,column = 1)

  17. root.mainloop()
复制代码


系统的报错是这样的:
  1. Exception in Tkinter callback
  2. Traceback (most recent call last):
  3.   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
  4.     return self.func(*args)
  5.   File "C:/Users/Administrator/Desktop/测试.py", line 8, in add
  6.     a = int(dict1.get(str1))
  7. TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
复制代码
最佳答案
2020-4-30 14:45:46
lbxx916 发表于 2020-4-30 14:44
感谢回复,但是我输入完成后点击完成没有反应呀

你根本就没写怎么反应,怎么会有反应?
而且你的代码逻辑上还有问题,又给你改了一下
  1. import tkinter as tk

  2. dict1 = {'小白':8}  

  3. #在字典查找然后更新分数
  4. def add():
  5.     str1 = v1.get()
  6.     dict1[str1]=dict.get(str1,0)+int(v2.get())

  7. root=tk.Tk()
  8. v1=tk.StringVar()
  9. v2=tk.StringVar()

  10. tk.Label(root,text='请输入姓名:').grid(row=0,column=0)
  11. tk.Entry(root,textvariable=v1).grid(row=0,column=1)
  12. tk.Label(root,text='请输入分值:').grid(row=1,column=0)
  13. tk.Entry(root,textvariable=v2).grid(row=1,column=1)

  14. tk.Button(root,text = '完成',command = add).grid(row = 2,column = 1)

  15. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-30 14:39:26 | 显示全部楼层
这样就可以了
  1. import tkinter as tk

  2. dict1 = {'小白':8}  

  3. #在字典查找然后更新分数
  4. def add():
  5.     str1 = v1.get()
  6.     a = int(dict1.get(str1,0))
  7.     b = a + int(v2.get())
  8.     dict1.update(str1 = b)

  9. root=tk.Tk()
  10. v1=tk.StringVar()
  11. v2=tk.StringVar()

  12. tk.Label(root,text='请输入姓名:').grid(row=0,column=0)
  13. tk.Entry(root,textvariable=v1).grid(row=0,column=1)
  14. tk.Label(root,text='请输入分值:').grid(row=1,column=0)
  15. tk.Entry(root,textvariable=v2).grid(row=1,column=1)

  16. tk.Button(root,text = '完成',command = add).grid(row = 2,column = 1)

  17. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-30 14:44:03 | 显示全部楼层

感谢回复,但是我输入完成后点击完成没有反应呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 14:45:46 | 显示全部楼层    本楼为最佳答案   
lbxx916 发表于 2020-4-30 14:44
感谢回复,但是我输入完成后点击完成没有反应呀

你根本就没写怎么反应,怎么会有反应?
而且你的代码逻辑上还有问题,又给你改了一下
  1. import tkinter as tk

  2. dict1 = {'小白':8}  

  3. #在字典查找然后更新分数
  4. def add():
  5.     str1 = v1.get()
  6.     dict1[str1]=dict.get(str1,0)+int(v2.get())

  7. root=tk.Tk()
  8. v1=tk.StringVar()
  9. v2=tk.StringVar()

  10. tk.Label(root,text='请输入姓名:').grid(row=0,column=0)
  11. tk.Entry(root,textvariable=v1).grid(row=0,column=1)
  12. tk.Label(root,text='请输入分值:').grid(row=1,column=0)
  13. tk.Entry(root,textvariable=v2).grid(row=1,column=1)

  14. tk.Button(root,text = '完成',command = add).grid(row = 2,column = 1)

  15. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 21:27:24 | 显示全部楼层
#在字典查找然后更新分数
def add():
    str1 = v1.get()
    dict1[str1]=dict1.get(str1,0)+int(v2.get())


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 10:10:32 | 显示全部楼层
  1. import tkinter as tk

  2. dict1 = {'小白':8}  

  3. #在字典查找然后更新分数
  4. def add():
  5.     str1 = v1.get()
  6.     a = int(dict1.get())
  7.     b = a + int(v2.get())
  8.     dict1.update(str1 = b)

  9. root=tk.Tk()
  10. v1=tk.StringVar()
  11. v2=tk.StringVar()

  12. tk.Label(root,text='请输入姓名:').grid(row=0,column=0)
  13. tk.Entry(root,textvariable=v1).grid(row=0,column=1)
  14. tk.Label(root,text='请输入分值:').grid(row=1,column=0)
  15. tk.Entry(root,textvariable=v2).grid(row=1,column=1)

  16. tk.Button(root,text = '完成',command = add).grid(row = 2,column = 1)

  17. root.mainloop()
复制代码


试试吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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