Цель кода, который я пишу, состоит в том, чтобы он мог удалять элементы из массива и соответствующего списка. Я надеюсь, что кнопка, которая удаляет элементы, будет ОТКЛЮЧЕНА, если в списке не выделен ни один элемент (поскольку в противном случае возвращается ошибка, когда вы пытаетесь нажать кнопку, и ничего не было выбрано, ошибка отображается ниже.)
>>> Exception in Tkinter callback
Traceback (most recent call last):
File "G:\2Boys_stuff\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "H:/The Quiet Apocalypse/Tests/test_13.py", line 14, in remove
LB = int(lb[0])
IndexError: tuple index out of range
Код, который я использую ниже:
from tkinter import *
import tkinter.messagebox as box
global listbox
TF = True
inventorylist1 = [("Item1","1.0"),("Item2","0.25"),("Item3","0.25")]
def remove():
global TF
global listbox
lb = listbox.curselection()
LB = int(lb[0])
del inventorylist1[LB]
TF = False
I(TF)
def IR():
global windowir
global listbox
windowir = Tk()
windowir.title( "IR" )
windowir.resizable( 0, 0 )
listframe = Frame( windowir )
listbox = Listbox( listframe )
for i in range(len(inventorylist1)):
e = i+1
listbox.insert(e, inventorylist1[i])
Label_ir = Label( listframe, relief = "groove" )
Label_ir.pack( side = TOP )
btn_ir_1 = Button( listframe, text = "Remove", command = remove )
btn_ir_1.pack(side = BOTTOM )
listbox.pack(side = BOTTOM)
listframe.pack(padx = 20, pady = 20)
Label_ir.configure( text = "You are carrying: " )
windowir.mainloop
def I(Tf):
global windowir
if Tf == True:
windowi = Tk()
windowi.title( "I" )
windowi.resizable( 0, 0 )
IR()
else:
windowir.destroy()
IR()
I(TF)