Python Forum
Python3 tkinter radiobutton problem
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python3 tkinter radiobutton problem
#12
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:
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()
Reply


Messages In This Thread
RE: Python3 tkinter radiobutton problem - by Nick_tkinter - Feb-13-2021, 11:37 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  How to dynamically change radiobutton text kenwatts275 2 3,377 Mar-05-2021, 02:25 AM
Last Post: deanhystad
  tkinter python button position problem Nick_tkinter 3 3,585 Jan-31-2021, 05:15 AM
Last Post: deanhystad
  [Tkinter] RadioButton Maryan 2 2,189 Oct-23-2020, 09:36 PM
Last Post: Maryan
  Call local variable of previous function from another function with Python3 & tkinter Hannibal 5 4,476 Oct-12-2020, 09:16 PM
Last Post: deanhystad
  [Tkinter] ClockIn/Out tkinter problem Maryan 2 2,230 Oct-12-2020, 03:42 AM
Last Post: joe_momma
  tkinter| listbox.insert problem Maryan 3 3,544 Sep-29-2020, 05:34 PM
Last Post: Yoriz
  Tkinter problem DPaul 6 4,177 May-28-2020, 03:40 PM
Last Post: DPaul
  [Tkinter] Tkinter wouldn't work with python3.8.3 shay_xs 2 2,636 May-24-2020, 11:48 PM
Last Post: Larz60+
  [Tkinter] How to create radiobutton in numpy gui python? luthfidali 2 2,624 May-23-2020, 10:35 AM
Last Post: timo
  [Tkinter] Tkinter - I have problem after import varaible or function from aGUI to script johnjh 2 2,610 Apr-17-2020, 08:12 PM
Last Post: johnjh

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020