Я строю интерфейс Kivy с модулем raspberry pi.К сожалению, я не могу изменить значок, когда Ethernet отключен на панели действий. Я уже назначаю значок, когда кабель Ethernet подключен, но когда он отключен, он не обновляет значок в моей папке активов. В основном приложение работает, когда я использую снова и снова использованиетот же значок в файле Kivy (EE1.png и mm.png).
class Menu(BoxLayout):
manager = ObjectProperty(None)
def __init__(self, **kwargs):
super(Menu, self).__init__(**kwargs)
Window.bind(on_keyboard=self._key_handler)
logger.setErrorIcon = self.setErrorIcon
#btn1 = ActionButton(text='',icon='./assest/usb.jpg')
def _key_handler(self, instance, key, *args):
if key is 27:
self.set_previous_screen()
return True
def is_connected(self, *args):
motorBtn = StringProperty()
index = NumericProperty(-1)
try
socket.create_connection(("www.google.com", 80))
self.ids.EthBtn.icon = './Asset/EE1.png'
logger.debug("connected")
except OSError:
self.ids.EthBtn.icon = './Asset/EE.png'<<<<This Icon doesnt shows
logger.error("E81:not connected")
ActionBar:
size_hint_y: 0.15
background_image: ''
background_color: 0.349, 0.584, 0.917, 1
ActionView:
ActionPrevious:
id: actprev
title: "[b]RheoSB[/b]"
markup: True
##color: 0.105, 0.109, 0.113,1
font_size: 100
#app_icon: './assest/v3.jpg'
app_icon: './Asset/VL2.png'
with_previous: False
##on_release: root.set_previous_screen()
#on_press: root.manager.current= 'home'
on_press: root.set_previous_screen()
on_press: root.btn_SwipeSound()
ActionButton:
id:errorBtn
text:''
icon: ''
on_press:root.error_logPopup()
ActionButton:
id:EthBtn
important: True
text:''
icon: './Asset/EE1.png'<<<<<
ActionButton:
id:motorBtn
text:''
icon: './Asset/mm.png'
Но когда я изменяю
except OSError:
self.ids.EthBtn.icon = './Asset/EE.png'
на
`except OSError:
self.ids.EthBtn.icon = './Asset/mm.png'`
, отображается значок mm.png.
РЕДАКТИРОВАТЬ вместо
class MenuApp(App):
index = NumericProperty(-1)
def build(self):
my_callback = Menu()
Clock.schedule_interval(my_callback.is_connected, 0.5)
return my_callback # Menu()
Я использовал *BackgroundScheduler()*
для обратного вызова *is_connected()*
метода, это вызывает у меня проблему.Не могли бы вы объяснить мне, почему это происходит, пожалуйста!
class MenuApp(FlatApp):
def build(self):
my_callback=Menu()
scheduler = BackgroundScheduler()
scheduler.add_job(my_callback.is_connected, 'interval', seconds=1)
#scheduler.add_job(ip_call.update_ip, 'interval', seconds=1)
scheduler.start()
return my_callback
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ https://apscheduler.readthedocs.io/en/latest/userguide.html#basic-concepts https://apscheduler.readthedocs.io/en/latest/modules/schedulers/background.html#apscheduler.schedulers.background.BackgroundScheduler
в коде from apscheduler.schedulers.background import BackgroundScheduler
Я просто импортирую библиотеку и начинаю использовать ее.Никогда не думал об использовании расписания часов Kivy раньше ..