#python #for-loop #button #kivy #host
#python #для цикла #кнопка #kivy #хост
Вопрос:
У меня есть 4 кнопки, каждая из которых посвящена хосту
Я хотел бы выполнить пинг для каждого хоста и изменить цвет фона кнопки на (зеленый или красный) в случае успешного пинга (зеленый) или нет (красный).
Я могу сделать это в 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
Я думаю, что проблема с моим кодом заключается в том, что когда один хост активен, все кнопки становятся зелеными, что неправильно. Иногда один хост включен, а другой выключен, и я хотел бы представить текущее состояние с цветом фона кнопки.
Ответ №1:
Вы можете создать список кнопок и перечислять в цикле и изменить цвет фона правой кнопки. Ниже приведена исправленная функция:
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