【发布时间】:2019-05-02 05:05:46
【问题描述】:
我正在使用树莓派模块构建 Kivy 界面。不幸的是,当以太网在操作栏上断开连接时,我无法更改图标。当以太网电缆连接时,我已经分配了一个图标,但是断开连接时它不会更新我的资产文件夹中的图标。基本上,当我反复使用时,应用程序可以工作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 时钟时间表..
【问题讨论】:
-
在一个地方引用
EE.png,在另一个地方引用EE1.png。是不是打错字了? -
@Kevin:您的代码运行良好,即当 Internet 断开连接时,它会显示不同的图标。
EE.png是否存在于文件夹.Asset中? -
嗨 @ikolim 是的 EE.png 在我的 ./Asset 文件夹中。./Asset 文件夹中的所有三个图标(EE1.png/mm.png/EEpng)。当我更改断开连接的图标时到 mm.png.App 有效。但我想显示一个不同的图标。
-
@Kevin:请分享所有三个图标,以便我们进行测试。谢谢。
-
@ikolim 请参阅问题的编辑部分。
标签: python python-3.x kivy kivy-language