在Python中更改每个活动主机按钮的背景色

在Python中更改每个活动主机按钮的背景色,python,for-loop,button,kivy,host,Python,For Loop,Button,Kivy,Host,我有4个按钮,每一个专用于一个主机 如果ping成功(绿色)或失败(红色),我想ping每个主机并将按钮背景颜色更改为(绿色或红色) 我可以在4个不同的函数中实现这一点,但是如果在一个函数中实现,它会更好更快 以下是函数: def Check(self): hosts = ['192.168.178.211', '192.168.178.212', '192.168.178.213', '192.168.178.214'] buttons = [self.button1, se

我有4个按钮,每一个专用于一个主机

如果ping成功(绿色)或失败(红色),我想ping每个主机并将按钮背景颜色更改为(绿色或红色)

我可以在4个不同的函数中实现这一点,但是如果在一个函数中实现,它会更好更快

以下是函数:

def Check(self):

    hosts = ['192.168.178.211', '192.168.178.212', '192.168.178.213', '192.168.178.214']
    buttons = [self.button1, self.button2, self.button3, self.button4]
    
    for x, i in enumerate(hosts):

        response = os.system("ping -n 1 -w 500 " + i + " > nul")

        if response == 0:
            buttons[x].background_color = green
        else:
            buttons[x].background_color = red

     pass
def检查(自):
hosts=['192.168.178.211','192.168.178.212','192.168.178.213','192.168.178.214']
对于主机中的i:
响应=操作系统(“ping-n1-w500”+i+“>num”)
如果响应==0:
self.button1.background_color=绿色
self.button2.background_color=绿色
self.button3.background\u color=绿色
self.button4.background\u color=绿色
其他:
self.button1.background_color=红色
self.button2.background_color=红色
self.button3.background\u color=红色
self.button4.background\u color=红色
通过

我认为我的代码的问题在于,当一个主机处于活动状态时,它会使所有按钮变为绿色,这是错误的。有时一台主机打开,另一台主机关闭,我想用按钮的背景色显示实时状态。

您可以创建按钮列表,在循环中枚举,并更改右侧按钮的背景色。以下是已更正的功能:

def Check(self):

    hosts = ['192.168.178.211', '192.168.178.212', '192.168.178.213', '192.168.178.214']
    buttons = [self.button1, self.button2, self.button3, self.button4]
    
    for x, i in enumerate(hosts):

        response = os.system("ping -n 1 -w 500 " + i + " > nul")

        if response == 0:
            buttons[x].background_color = green
        else:
            buttons[x].background_color = red

     pass