bugfix> python > 投稿
def add_to_cart():
# Import globals as required
global item_images
global item_names
global item_prices
global count
global total_price
# Find required item details by using the active location of the listbox cursor
img_index = item_box.index(ACTIVE)
name_index = item_box.index(ACTIVE)
price_index = item_box.index(ACTIVE)
# Check listbox to make sure it has been populated and item is selected
#### Do i need this section ####
selection = item_box.curselection()
if selection:
    item_box.delete('0', END)
    item_box.insert(END, "Oops please select a category")
else:    
# Append cart lists ready for html invoice
    cart_imgs.append(item_images[img_index])
    cart_names.append(item_names[name_index])
    cart_prices.append(item_prices[price_index])
# Do i need this handle and if so how do i use it...
try:
    item_box.index = int(item_box.curselection()[0])
except IndexError:
    item_box.delete('0', END)
    item_box.insert(END, "Oops please select a category")
total_price = total_price + float(item_prices[price_index])
# Increase item count per button press.
count = count + 1

ショッピングリストとして機能するリストボックスがあります。ユーザーは、リストボックスに入力するカテゴリボタン(コンピューター/キッチン)を押すと、後でHTMLに送信されるカートにアイテムを選択/追加できます。 cart_img.append(item_images[img_index]) というエラーが表示されますリストのインデックスが範囲外です。

これは、add_to_cart funcを押したときにリストボックスに何もないためです。 (これは、最初にカテゴリが選択されなかったためでもあります)これとtry/exceptエラーハンドルを渡すことを試みるif/elseステートメントを含めました。コールバック関数について話すいくつかの投稿を見つけましたが、この状況でそれを実装する方法を完全には理解していません。

どんな助けでも感謝します

元のコードは次のとおりで、選択したカテゴリがある場合は正常に機能します。

def add_to_cart():
# Import globals as required
global item_images
global item_names
global item_prices
global count
global total_price
# Find required item details by using the active location of the listbox cursor
img_index = item_box.index(ACTIVE)
name_index = item_box.index(ACTIVE)
price_index = item_box.index(ACTIVE)
# Append cart lists ready for html invoice
cart_imgs.append(item_images[img_index])
cart_names.append(item_names[name_index])
cart_prices.append(item_prices[price_index])
# Update total price for invoice
total_price = total_price + float(item_prices[price_index])
# Increase count per button press.
count = count + 1

回答 1 件
  • def add_to_cart():
    # Import globals as required
    global item_images
    global item_names
    global item_prices
    global count
    global total_price
    try:   
    # Find required item details by using the active location of the listbox cursor
        img_index = item_box.index(ACTIVE)
        name_index = item_box.index(ACTIVE)
        price_index = item_box.index(ACTIVE)
    # Append cart lists ready for html invoice
        cart_imgs.append(item_images[img_index])
        cart_names.append(item_names[name_index])
        cart_prices.append(item_prices[price_index])
    # Update total price for invoice
        total_price = total_price + float(item_prices[price_index])
    # Increase count per button press.
        count = count + 1
    except:
        item_box.delete('0', END)
        item_box.insert(END, "PLEASE SELECT A CATEGORY BEFORE PROCEEDING")
    
    

あなたの答え