简体   繁体   English

改变tkinter中按钮的颜色

[英]Changing colour of buttons in tkinter

While trying to make an elevator simulator I have come across a problem. 在尝试制作电梯模拟器时,我遇到了一个问题。 There are 4 elevators and when the floor number is pressed it should change to be red. 有4部电梯,当按下楼层号时,它应该变成红色。 This works for 1 'panel' in 1 elevator, but not for 1 'panel' in each elevator. 这适用于1个电梯中的1个“面板”,但不适用于每个电梯中的1个“面板”。 Here is my code : 这是我的代码:

def floorChooserButtons( self, eleNum, floors, yStart, yEnd, xStart, xEnd):
    self.Buttons1 = [i for i in range(41)]
    self.Buttons2 = [i for i in range(41)]
    self.Buttons3 = [i for i in range(41)]
    self.Buttons4 = [i for i in range(41)]
    if(eleNum is 1):
        xPos = xStart
        yPos = yStart
        for floor in floors:
            if(yPos == yEnd):
                xPos = xPos + 1
                yPos = yStart
            if(xPos == xEnd-1):
                yPos = yStart+2
            self.Buttons1[floor] = tk.Button(self, width=3, text=floor, 
                command = lambda f=floor: self.chooser(f, eleNum))
            self.Buttons1[floor].grid(row=xPos, column =yPos)
            yPos = yPos + 1
    elif(eleNum is 2):
        xPos = xStart
        yPos = yStart
        for floor in floors:
            if(yPos == yEnd):
                xPos = xPos + 1
                yPos = yStart
            if(xPos == xEnd-1):
                yPos = yStart+2
            self.Buttons2[floor] = tk.Button(self, width=3, text=floor, 
                command = lambda f=floor: self.chooser(f, eleNum))
            self.Buttons2[floor].grid(row=xPos, column =yPos)
            yPos = yPos + 1
    elif(eleNum is 3):
        xPos = xStart
        yPos = yStart
        for floor in floors:
            if(yPos == yEnd):
                xPos = xPos + 1
                yPos = yStart
            if(xPos == xEnd-1):
                yPos = yStart+2
            self.Buttons3[floor] = tk.Button(self, width=3, text=floor, 
                command = lambda f=floor: self.chooser(f, eleNum))
            self.Buttons3[floor].grid(row=xPos, column =yPos)
            yPos = yPos + 1
    elif(eleNum is 4):
        xPos = xStart
        yPos = yStart
        for floor in floors:
            if(yPos == yEnd):
                xPos = xPos + 1
                yPos = yStart
            if(xPos == xEnd-1):
                yPos = yStart+2
            self.Buttons4[floor] = tk.Button(self, width=3, text=floor, 
                command = lambda f=floor: self.chooser(f, eleNum))
            self.Buttons4[floor].grid(row=xPos, column =yPos)
            yPos = yPos + 1
        self.QUIT = tk.Button(self, text="QUIT", fg="red",
            command=root.destroy).grid(row = xPos, column = yPos)


def chooser(self, index, eleNum):
    print("Number", index, "pressed in elevator", eleNum)
    if eleNum is 1:
        self.Buttons1[index].configure(bg="red")
    if eleNum is 2:
        self.Buttons2[index].configure(bg="red")
    if eleNum is 3:
        self.Buttons3[index].configure(bg="red")
    if eleNum is 4:
        self.Buttons4[index].configure(bg="red")

eleNum is the number of the elevator, it is 1-4 yStart, yEnd, xStart, xEnd are all used for the layout. eleNum是电梯的编号,它是1-4 yStart,yEnd,xStart,xEnd都用于布局。

Any help would be smashing. 任何帮助都会粉碎。 Thanks 谢谢

You can change the color of a button in many ways 您可以通过多种方式更改按钮的颜色

b = Button(background = 'red')
b.config(background = 'red')
b.configure(background = 'red')
b['background'] = 'red'

b = Button(bg = 'red')
b.config(bg = 'red')
b.configure(bg = 'red')
b['bg'] = 'red'

You can change the font color with foreground or fg 您可以使用foregroundfg更改字体颜色

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM