Попытка добавить одну часть списка в другую с помощью кнопок Spinbox и RadioButton. - PullRequest
0 голосов
/ 26 мая 2018

Я недавно работал над чем-то, где у вас есть список имен, и только когда нажата определенная радиопереключатель и нажата кнопка.

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

Что этот код должен делать, пока проверяется радио-кнопка и вы нажимаете кнопку, она копирует одну частьсписок в соответствии с тем, что спинбокс установлен на другое для будущего использования, а затем отображает добавленный элемент в текстовом поле, чтобы пользователь мог видеть

1 Ответ

0 голосов
/ 26 мая 2018

Я понял это через некоторое время.Проблема заключалась в том, что оператор If проверяет v, когда вместо этого следует проверять v.get(), поскольку v само по себе просто возвращает IntVar().Вы можете увидеть это здесь, когда вы делаете print(v) против print(v.get()), поскольку v само по себе выводит PY_VAR0, но v.get() выводит 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...