Я пишу программу для имитации сигнала железной дороги, которая в конечном итоге будет работать на Raspberry Pi, получающем аналоговые сигналы через AD C для управления сигналами разных цветов.
Я очень плох в программировании GUI, поэтому мой вопрос в том, как написать функцию для изменения цвета каждого "светодиода", который я могу в конечном итоге вызывать при каждом обнаружении высокого напряжения? Сейчас я просто хочу иметь функцию set_top_signal ("Green"), которая может быть вызвана для обновления графика c.
. Затем я хочу написать функцию для fla sh сигнала включается и выключается каждые пол секунды. flash_top_signal ("Зеленый")
Текущий GUI Фото
import tkinter as tk
class WaysideSimulator(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
# self.pack()
self.grid()
self.create_widgets()
def create_widgets(self):
self.Searchlight_Button = tk.Button(self, text="Start Simulation", command=self.start_simulation())
# self.Searchlight_Button.pack(side="bottom")
self.Searchlight_Button.grid(row=0, column=0)
self.End_Simulation_Button = tk.Button(self, text="End Simlation", fg="red", command=self.master.destroy)
# self.End_Simulation_Button.pack(side="bottom")
self.End_Simulation_Button.grid(row=1, column=0)
# Draw the Signal Rectangle
self.canvas = tk.Canvas(self, width=500, height=500, bg="white")
# self.rectangle.pack()
self.canvas.grid()
# Draw the Searchlight Signal Heads
self.signal_pole = self.canvas.create_rectangle(245, 20, 255, 500, fill="grey")
self.top_signal_head = self.canvas.create_oval(200, 10, 300, 110, fill="black")
self.middle_signal_head = self.canvas.create_oval(200, 160, 300, 260, fill="black")
self.bottom_signal_head = self.canvas.create_oval(200, 310, 300, 410, fill="black")
self.top_signal_light = self.canvas.create_oval(240, 50, 260, 70, fill="red")
self.middle_signal_light = self.canvas.create_oval(240, 200, 260, 220, fill="yellow")
self.bottom_signal_light = self.canvas.create_oval(240, 350, 260, 370, fill="green")
def set_top_signal_color(self, color):
self.canvas.delete(self.top_signal_light)
self.canvas.delete(self.middle_signal_light)
self.canvas.delete(self.bottom_signal_light)
"""
Signal Color Code Chart:
0 = Black(Off)
1 = Red
2 = Yellow
3 = Green
"""
if color == "Off":
self.top_signal_light = self.canvas.create_oval(240, 50, 260, 70, fill="black")
elif color == "Red":
self.top_signal_light = self.canvas.create_oval(240, 50, 260, 70, fill="red")
elif color == "Yellow":
self.top_signal_light = self.canvas.create_oval(240, 50, 260, 70, fill="yellow")
elif color == "Green":
self.top_signal_light = self.canvas.create_oval(240, 50, 260, 70, fill="green")
def start_simulation(self):
print("Searchlight Simulation Started")
def main():
root = tk.Tk()
root.title("Searchlight Simulator")
root.geometry("500x525")
root.resizable(0, 0)
s1 = WaysideSimulator(master=root)
s1.mainloop()
if __name__ == '__main__':
main()