我需要创建一个停止灯模拟,但不能在我的生活中使圆圈相互重叠。网格是从左上角开始的吗? X和Y轴似乎没有像我期望的那样。
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()
答案 0 :(得分:1)
我能够确定TKinter使用不同的坐标系。它使用传统坐标系的右下侧。一旦我弄明白,我就能找到合适的坐标。