# radio button = similar to checkbox, but you can only select one from a group from tkinter import * food = ["pizza","hamburger","hotdog"] def order(): if(x.get()==0): print("You ordered pizza!") elif(x.get()==1): print("You ordered a hamburger!") elif(x.get()==2): print("You ordered a hotdog!") else: print("huh?") window = Tk() pizzaImage = PhotoImage(file='pizza.png') hamburgerImage = PhotoImage(file='hamburger.png') hotdogImage = PhotoImage(file='hotdog.png') foodImages = [pizzaImage,hamburgerImage,hotdogImage] x = IntVar() for index in range(len(food)): radiobutton = Radiobutton(window, text=food[index], #adds text to radio buttons variable=x, #groups radiobuttons together if they share the same variable value=index, #assigns each radiobutton a different value padx = 25, #adds padding on x-axis font=("Impact",50), image = foodImages[index], #adds image to radiobutton compound = 'left', #adds image & text (left-side) #indicatoron=0, #eliminate circle indicators #width = 375, #sets width of radio buttons command=order #set command of radiobutton to function ) radiobutton.pack(anchor=W) window.mainloop()
A simpler way to write his order function is: def order(): order = ["You bought the pizza!", "You bought the hamburger!", "You bought the hotdog!"] print(order[x.get()])
and there's a version if you want to be grammaticaly correct if food[x.get()] == "pizza": print(f"You ordered {food[x.get()]}!") #/ print(f"You ordered a slice of {food[x.get()]}!") else: print(f"You ordered a {food[x.get()]}!")
In python 3.11 it's probably the same. My pyCharm has highlighted that "indicatoron=0" too, but when I rewrote 0 to False it's ok now. It worked even with the 0, now it seems like pyCharm likes it more :-)
Hey guys I know this is a comment on a 3-year old post but just want some help. I wrote all the code he used, then I wanted to change the background of the radio button to be blue, so I wrote "bg="blue"" after the width and before the command in the radio button variable. For some reason when I run the code only the hamburger and hot dog changes background to blue and the pizza's background stays as white. I asked ChatGPT 4.0 what could be the issue and they don't have a concrete answer. Are there any coding connoisseurs that might be able to identify my issue?
window = Tk() x = IntVar() dummy = Radiobutton(window, text="", variable=x, value=0, indicatoron=False) for index in range(len(food)): radiobutton = Radiobutton(window, text=food[index], variable=x, value=index + 1, padx=10, pady=5, font=("Impact", 40), indicatoron=False, width=20, command=order) radiobutton.pack(anchor=W) window.mainloop() don't know i fyou still need it but that's my solution haha
So is there a reason why "im looking i just dont know if its cause obscure.. that when i use .place and coordinates that i am only getting the last Item in the list appearing and thus only hhave 1 radio button? apposed to how pack automatically works with the full list and for:loop ?
I tried creating the image in the for loop because I needed to resize it I added it to a single variable called photo and added the image to the image argument: image=photo, . When I did it messed up the program so that only the last image (the hotdog) showed up . Does it just point to the image in the array you've created rather than copying the image to the radio button? I'll try deleting the array after the for loop and see what happens.