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

Changing the background color for buttons for each alive Host in 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状态。

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

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