簡體   English   中英

使用python創建交通燈

[英]creating a traffic light using python

我正在嘗試使用tkinter顯示交通信號燈。 除單選按鈕外,我什么也無法顯示。 我嘗試了不同的調整使其顯示,但沒有任何效果。

from tkinter import *


class TrafficLights:
    def __init__(self):
        window = Tk()
        window.title("Traffic Light")

        self.canvas = Canvas(window, width = 450, height = 300, bg = "white")
        self.canvas.pack()
        frame = Frame(window)
        frame.pack()
        self.v1 = IntVar()



        rbRed = Radiobutton(frame, text = "Red", bg = "red",
                variable = self.v1, value = 1,
                command = self.processRadiobutton)
        rbYellow = Radiobutton(frame, text = "Yellow", bg = "yellow",
                variable = self.v1, value = 2,
                command = self.processRadiobutton)               
        rbGreen = Radiobutton(frame, text = "Green", bg = "green",
                variable = self.v1, value = 3,              
                command = self.processRadiobutton)

        rbRed.grid(row = 10, column = 1)
        rbYellow.grid(row = 10, column = 2)
        rbGreen.grid(row = 10, column = 3)
        window.mainloop()


    def processRadiobutton(self):
            if self.v1.get() == 'R':
                self.lbl["fg"] = "red"
            elif self.v1.get() == 'Y':
                  self.lbl["fg"] = "yellow"
            elif self.v1.get() == 'G':
                  self.v1.lbl["fg"] = "Green"


    id = self.canvas.create_rectangle(200, 67, 265, 60)
    def displayRectangle(self):
          self.canvas.create_rectangle(200, 67, 265, 60, tags = "rect")
    def displayOval(self):
          self.canvas.create_oval(10, 10, 10, 10, fill='red')
    def displayOval(self):
          self.canvas.create_oval(20, 20, 20, 20, fill='yellow')
    def displayOval(self):
          self.canvas.create_oval(30, 30, 30, 30, fill='green')

TrafficLights()          

將功能分配給Radiobutton示例,但您可以將功能分配給self.color

from Tkinter import *

class TrafficLights:

    def __init__(self):

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

        frame = Frame(window)
        frame.pack()

        self.color = StringVar()

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

        radio_yellow = Radiobutton(frame, text="Yellow", bg="yellow", variable=self.color, value="Y", command=self.on_RadioChange)               
        radio_yellow.grid(row = 10, column = 2)

        radio_green = Radiobutton(frame, text="Green", bg="green", variable=self.color, value="G", command=self.on_RadioChange)
        radio_green.grid(row = 10, column = 3)

        self.canvas = Canvas(window, width=450, height=300, bg="white")
        self.canvas.pack()

        self.oval_red = self.canvas.create_oval(10, 10, 110, 110, fill="white")
        self.oval_yellow = self.canvas.create_oval(120, 10, 220, 110, 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="red")

        window.mainloop()

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

在此處輸入圖片說明

from tkinter import *

class TrafficLights:

    def __init__(self):

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


        frame = Frame(window)
        frame.pack()

        self.color = StringVar()

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

        radio_yellow = Radiobutton(frame, text="Yellow", bg="yellow", variable=self.color, value="Y", command=self.on_RadioChange)               
        radio_yellow.grid(row = 10, column = 2)

        radio_green = Radiobutton(frame, text="Green", bg="green", variable=self.color, value="G", command=self.on_RadioChange)
        radio_green.grid(row = 10, column = 3)

        self.canvas = Canvas(window, width=450, height=300, bg="white")
        self.canvas.pack()

        self.oval_red = self.canvas.create_oval(10, 10, 110, 110, fill="white")
        self.oval_yellow = self.canvas.create_oval(120, 10, 220, 110, 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="red")

        window.mainloop()

    def on_RadioChange(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")

            self.canvas.create_rectangle(3, 5, 350, 130)
TrafficLights()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM