Я недавно работал над чем-то, где у вас есть список имен, и только когда нажата определенная радиопереключатель и нажата кнопка.
from tkinter import *
main_window = Tk()
v = IntVar()
def preorder():
pass
preorder_button = Radiobutton(main_window, text = "PreOrder", indicatoron = 0,
width = 10,
padx = 20,
variable=v,
command=preorder,
value=1)
# Making a Spin wheel
wheel = Spinbox(main_window, from_=1, to=2, width = 3, bd=0, font = (24))
# Shopping cart list
shopping_cart = Text(main_window, width = 30, height = 10, borderwidth = 2, relief = 'groove')
# Making an 'Add To Cart' Button
var = 0
InvoiceList = []
A_List = ['Hello', 'Goodbye']
def AddToCart():
global var, InvoiceList
spinInt = int(wheel.get())
if v == 1:
InvoiceList.append(str(A_List[int(wheel.get()) - 1]))
print(InvoiceList)
shopping_cart.insert(END, InvoiceList[var] + '\n')
var = var + 1
AddCartButton = Button(main_window, text="Add To Cart", width=10, padx=20, command=AddToCart).grid(row=8, column=1, columnspan=2, sticky=SW)
preorder_button.grid(row = 3, column = 1)
wheel.grid(row = 3, column = 3, rowspan = 2)
shopping_cart.grid(row = 6, column = 1, columnspan = 4)
main_window.mainloop()
Проблема заключается в том, чтонезависимо от того, что я делаю, я всегда получаю сообщение об ошибке, говорящее, что внутри строки счета нет ничего, поэтому я предполагаю, что это проблема с тем, как коды добавляют деталь из первого списка во второй список, но я понятия не имею, чточто-то не так.
Вот ошибка, которую я получаю:
[]
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\jackb\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "c:/Users/jackb/Documents/UNI/IFB104/Assignment 2/online_shopping_app.py", line 332, in AddToCart
shopping_cart.insert(END, InvoiceList[var] + '\n')
IndexError: list index out of range
Что этот код должен делать, пока проверяется радио-кнопка и вы нажимаете кнопку, она копирует одну частьсписок в соответствии с тем, что спинбокс установлен на другое для будущего использования, а затем отображает добавленный элемент в текстовом поле, чтобы пользователь мог видеть