Feb-13-2021, 11:37 AM
Hello again.Now, I have the following problem.When I click an item(food) ,I put it to the basket.When I click another item ,I want to put it down the previous one,but the item places on top of the other.
Code:
Code:
from tkinter import * from PIL import Image , ImageTk import tkinter.font as tkFont root = Tk() root.title("Super Market") root.geometry("1500x1300") food = [ ("Rice" , 0.99) , # value for radio_button -> 1 ("Spaghetti" , 0.95) , # value for radio_button -> 2 ("Ice cream" , 3.44) , # value for radio_button -> 3 ("Pizza" , 7.50) , # value for radio_button -> 4 ("Cheese" , 2.10) , # value for radio_button -> 5 ("Cheddar" , 0.45) , # value for radio_button -> 6 ("Cherry" , 0.88) , # value for radio_button -> 7 ("Banana" , 0.40) , # value for radio_button -> 8 ("Apple" , 0.67) , # value for radio_button -> 9 ("Meat" , 7.28) , # value for radio_button -> 10 ("Fish" , 9.72) , # value for radio_button -> 11 ("Orange" , 0.62) , # value for radio_button -> 12 ("Orange juice" , 2.10) , # value for radio_button -> 13 ("Chocolate" , 0.99) , # value for radio_button -> 14 ("Bread" , 0.55) , # value for radio_button -> 15 ("Milk" , 1.00) # value for radio_button -> 16 ] NUMBER_OF_FOODS = 16 food_name_var = StringVar() food_name_var.set(1) # δεν δειχνει σε κανενα radio button αρχικα , αν εβαζα 1 θα εδειχνε στο 1ο προιον κοκ... frame = LabelFrame(root , relief = SUNKEN , bd = 1) frame.grid(row = 0 , column = 0 , sticky = W) label_frame_food_info = LabelFrame(root , height = 600, width = 300 , relief = SUNKEN , bd = 2) label_frame_food_info.place(x = 1200 , y = 50) food_quantity = [0 for i in range(NUMBER_OF_FOODS)] r = 0 position_in_list = 0 for food_name , food_price in food: Radiobutton(frame , text = food_name , variable = food_name_var , value = r+1 , padx = 10 , pady = 5).grid(row = r , column = 0 , sticky = W) label_price = LabelFrame(root , relief = SUNKEN , bd = 1 , text = "Price") label_price.grid(row = r , column = 0) r += 1 def select_food(food_name): global position_in_list print(position_in_list) label_frame_food_info = LabelFrame(root , height = 600, width = 300 , relief = SUNKEN , bd = 2) # update shopping list label_frame_food_info.place(x = 1200 , y = 50) if(food_quantity[ int(food_name_var.get()) - 1 ] == 0): food_quantity[ int(food_name_var.get()) - 1 ] += 1 label_print_food = Label(label_frame_food_info , padx = 3 , height = 2 , text = food_name + " (" + str(food_quantity[int(food_name_var.get() ) - 1]) + ")" , width = 17) label_print_food.grid(row = position_in_list , column = 0) #print(food_name_var.get()) button_remove_food = Button(label_frame_food_info , text = "-" , fg = "red" , command = lambda: remove_selected_food( int(food_name_var.get() ) - 1 , food_name) , width = 6) button_remove_food.grid(row = position_in_list , column = 1) button_add_food = Button(label_frame_food_info , text = "+" , fg = "green" , command = lambda: add_selected_food( int(food_name_var.get() ) - 1 , food_name) , width = 6) button_add_food.grid(row = position_in_list , column = 2) position_in_list += 1 def remove_selected_food(item_quantity , food_name): global position_in_list print(food_quantity[item_quantity]) if(food_quantity[item_quantity] > 1): food_quantity[item_quantity] -= 1 label_frame_food_info = LabelFrame(root , height = 600, width = 300 , relief = SUNKEN , bd = 2) # update shopping list label_print_food = Label(label_frame_food_info , padx = 3 , height = 2 , text = food_name + " (" + str(food_quantity[int(food_name_var.get() ) - 1]) + ")" , width = 17) label_frame_food_info.place(x = 1200 , y = 50) label_print_food.grid(row = position_in_list , column = 0) '''for i in range(0 , 16): print(food_quantity[i]) print("-------")''' else: label_frame_food_info = LabelFrame(root , height = 600, width = 300 , relief = SUNKEN , bd = 2) # update shopping list label_print_food = Label(label_frame_food_info , padx = 3 , height = 2 , text = food_name + " (" + str(food_quantity[int(food_name_var.get() ) - 1]) + ")" , width = 17) label_frame_food_info.place(x = 1200 , y = 50) label_print_food.grid(row = position_in_list , column = 0) label_print_food.grid_forget() def add_selected_food(item_quantity , food_name): global position_in_list food_quantity[item_quantity] += 1 label_frame_food_info = LabelFrame(root , height = 600, width = 300 , relief = SUNKEN , bd = 2) # update shopping list label_frame_food_info.place(x = 1200 , y = 50) # update listed food label_print_food = Label(label_frame_food_info , padx = 3 , height = 2 , text = food_name + " (" + str(food_quantity[int(food_name_var.get() ) - 1]) + ")" , width = 17) label_print_food.grid(row = position_in_list , column = 0) '''for i in range(0 , 16): print(food_quantity[i]) print("-------")''' lock_logo = Image.open("shopping_basket.jpg") lock_logo = lock_logo.resize( (60 , 60) , resample = 0) lock_image = ImageTk.PhotoImage(lock_logo) size_letter = tkFont.Font(family = "Helvetica" , size = 28 , weight = "bold") label_title = Label(root , text = "e-market" , padx = 486 , font = size_letter) label_title.grid(row = 0 , column = 4 , sticky = N) button = Button(root , image = lock_image , command = lambda: select_food(food[ int(food_name_var.get() ) - 1][0])) button.grid(row = 0 , column = 3 , sticky = S) label_info = Label(root , text = "Shopping basket") label_info.place(x = 1294 , y = 20) root.mainloop()