首页 > 解决方案 > 在 Python 中更改每个活动主机的按钮的背景颜色

问题描述

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

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

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

这是功能:

def Check(self):

    hosts = ['192.168.178.211', '192.168.178.212', '192.168.178.213', '192.168.178.214']

    for i in hosts:

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

        if response == 0:
            self.button1.background_color = green
            self.button2.background_color = green
            self.button3.background_color = green
            self.button4.background_color = green

        else:
            self.button1.background_color = red
            self.button2.background_color = red
            self.button3.background_color = red
            self.button4.background_color = red

     pass

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

标签: pythonfor-loopbuttonkivyhost

解决方案


您可以为按钮创建一个列表并循环枚举并更改右侧按钮的背景颜色。下面是修正后的函数:

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

推荐阅读