2017-07-17 3 views
0

Ich muss eine Ampel Simulation erstellen, aber kann nicht für das Leben von mir die Kreise übereinander machen. Beginnt das Gitter oben links? Die X- und Y-Achse scheint sich nicht so zu verhalten, wie ich es erwarten würde.Wie erstelle ich 3 Ovale übereinander in TKInter

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() 

Antwort

1

Ich konnte feststellen, dass TKinter ein anderes Koordinatensystem verwendet. Es verwendet die untere rechte Seite eines konventionellen Koordinatensystems. Sobald ich das herausgefunden hatte, war ich in der Lage, die richtigen Koordinaten zu finden.