所以我正在为列表程序开发这个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()
感谢那些指出我的字符串错误的人。