字典值不减少

时间:2017-11-30 20:11:00

标签: python list dictionary tkinter

所以我正在为列表程序开发这个GUI作为一个类项目,一切正常,除了减少字典值。整个代码块:

from tkinter import *

window = Tk()
window.title("ListGUI")
items = {}

def update_listbox():
    clear_listbox()
    for key in sorted(items):
        if items.get(key) > 1:
            lb_items.insert("end", '%s (%d)' % (key, items[key]))
        else:
            lb_items.insert("end", key)

def clear_listbox():
    lb_items.delete(0, "end")

def add_item():
    item = txt_input.get()
    if item != '':
        if item in items:
            items[item] = items.get(item) + 1
        else:
            items[item] = 1
    update_listbox()
    txt_input.delete(0, "end")

def del_item():
    item = lb_items.get("active")
    if item in items:
        if items.get(item) > 1:
            items[item] = items.get(item) - 1
        else:
            items.pop(item)
    update_listbox()

txt_input = Entry(window, width = 15)
txt_input.pack()

btn_add = Button(window, text = "Add item", command = add_item)
btn_add.pack()

lb_items = Listbox(window)
lb_items.pack()

btn_del = Button(window, text = "Delete item", command = del_item)
btn_del.pack()

window.mainloop()

不能正常工作的部分是此块中的嵌入式if语句:

def del_item():
    item = lb_items.get("active")
    if item in items:
        if items.get(item) > 1:
            items[item] = items.get(item) - 1
        else:
            items.pop(item)
    update_listbox()

正如我所看到的,它应该减少给定键的字典值的值,但是,它不起作用。流行音乐有效,但降低价值却没有。

编辑:

通过从列表框中拆分获得的字符串变量来修复代码块。

def del_item():
    item = lb_items.get("active")
    item = item.split(' ')
    item = item[0]
    if item in items:
        if items.get(item) > 1:
            items[item] = items.get(item) - 1
        else:
            items.pop(item)
    update_listbox()

感谢那些指出我的字符串错误的人。

0 个答案:

没有答案