lbxx916 发表于 2020-4-30 14:34:07

想结合tk和字典做一个字典更新,但是失败了

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

dict1 = {'小白':8}

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

root=tk.Tk()
v1=tk.StringVar()
v2=tk.StringVar()

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

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

root.mainloop()


系统的报错是这样的:Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
File "C:/Users/Administrator/Desktop/测试.py", line 8, in add
    a = int(dict1.get(str1))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

永恒的蓝色梦想 发表于 2020-4-30 14:39:26

这样就可以了import tkinter as tk

dict1 = {'小白':8}

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

root=tk.Tk()
v1=tk.StringVar()
v2=tk.StringVar()

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

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

root.mainloop()

lbxx916 发表于 2020-4-30 14:44:03

永恒的蓝色梦想 发表于 2020-4-30 14:39
这样就可以了

感谢回复,但是我输入完成后点击完成没有反应呀

永恒的蓝色梦想 发表于 2020-4-30 14:45:46

lbxx916 发表于 2020-4-30 14:44
感谢回复,但是我输入完成后点击完成没有反应呀

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

dict1 = {'小白':8}

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

root=tk.Tk()
v1=tk.StringVar()
v2=tk.StringVar()

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

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

root.mainloop()

xiangjianshinan 发表于 2020-4-30 21:27:24

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


{:10_315:}

MIke_python小小 发表于 2020-5-2 10:10:32

import tkinter as tk

dict1 = {'小白':8}

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

root=tk.Tk()
v1=tk.StringVar()
v2=tk.StringVar()

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

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

root.mainloop()


试试吧
页: [1]
查看完整版本: 想结合tk和字典做一个字典更新,但是失败了