PyPunk
PyPunk

Reputation: 79

How do I create 3 ovals over top of one another in TKInter

I need to create a stop light simulation but cannot for the life of me make the circles get over top one another. Does the grid start in the top left? The X and Y axis doesn't seem to behave like I would expect it to.

    from tkinter import *

    class TrafficLights:

    def __init__(self):

        window = Tk()
        window.title("Traffic Light")

        frame = Frame(window)
        frame.pack()

        self.color = StringVar()

        #Create Button options and corresponding colors

        #Red
        radio_red = Radiobutton(frame, text="Red", bg="red", variable=self.color, value="R", command=self.checkSelect)
        radio_red.grid(row=10, column=1)

        #Yellow
        radio_yellow = Radiobutton(frame, text="Yellow", bg="yellow", variable=self.color, value="Y", command=self.checkSelect)               
        radio_yellow.grid(row = 20, column = 1)

        #Green
        radio_green = Radiobutton(frame, text="Green", bg="green", variable=self.color, value="G", command=self.checkSelect)
        radio_green.grid(row = 30, column = 1)

        #Create canvas window and rectange for light
        self.canvas = Canvas(window, width=300, height=400, bg="white")
        self.canvas.create_rectangle(10,10,110,400)
        self.canvas.pack()





        #I cant seem to get the yellow and green where I need it.
        #Where is the center of the grid?

        self.oval_red = self.canvas.create_oval(10, 10, 110, 110, fill="white")

        self.oval_yellow = self.canvas.create_oval(100, 110, 310, 400, fill="white")

        self.oval_green = self.canvas.create_oval(230, -10, 330, 110, fill="white")


        self.color.set("R")
        self.canvas.itemconfig(self.oval_red, fill="white")

        window.mainloop()

    def checkSelect(self):
        color = self.color.get()



        if color == "R":
            self.canvas.itemconfig(self.oval_red, fill="red")
            self.canvas.itemconfig(self.oval_yellow, fill="white")
            self.canvas.itemconfig(self.oval_green, fill="white")
        elif color == "Y":
            self.canvas.itemconfig(self.oval_red, fill="white")
            self.canvas.itemconfig(self.oval_yellow, fill="yellow")
            self.canvas.itemconfig(self.oval_green, fill="white")
        elif color == "G":
            self.canvas.itemconfig(self.oval_red, fill="white")
            self.canvas.itemconfig(self.oval_yellow, fill="white")
            self.canvas.itemconfig(self.oval_green, fill="green")


TrafficLights()

Upvotes: 0

Views: 268

Answers (1)

PyPunk
PyPunk

Reputation: 79

I was able to determine that TKinter uses a different coordinate system. It uses the lower right hand side of a conventional coordinate system. Once I figured that out I was able to get the right coords.

Upvotes: 1

Related Questions