【发布时间】:2021-11-09 12:29:28
【问题描述】:
我希望将 ThreeLineListItem 的内容传递到另一个屏幕,这样我就可以使用它的详细信息来获取功率读数并单独显示它。我试图研究它,但我没有找到任何与我正在寻找的东西相关的东西。有人可以帮忙吗?我是否必须以某种方式将其作为参数传递?
main.py:
from kasa.discover import Discover
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen,ScreenManager
from kivymd.app import MDApp
from kivy.properties import ObjectProperty
from kivymd.uix.list import OneLineAvatarIconListItem, ThreeLineListItem, TwoLineListItem
from decimal import Decimal
from pyemvue import PyEmVue, device
import datetime
import asyncio
from enum import Enum
class Scale(Enum):
SECOND = '1S'
MINUTE = '1MIN'
MINUTES_15 = '15MIN'
HOUR = '1H'
DAY = '1D'
WEEK = '1W'
MONTH = '1MON'
YEAR = '1Y'
class Unit(Enum):
KWH = 'KilowattHours'
USD = 'Dollars'
AMPHOURS = 'AmpHours'
TREES = 'Trees'
GAS = 'GallonsOfGas'
DRIVEN = 'MilesDriven'
CARBON = 'Carbon'
vue = PyEmVue()
vue.login(username='mymalshamsi@gmail.com', password='Moh123123!')
class Page1(Screen):
mdlistid = ObjectProperty()
def create_new_item(self,*args):
plugs = asyncio.run(Discover.discover())
devices = vue.get_devices()
usage_over_time, start_time = vue.get_chart_usage(devices[1].channels[0], datetime.datetime.now(datetime.timezone.utc)-datetime.timedelta(minutes=5), datetime.datetime.now(datetime.timezone.utc), scale=Scale.MINUTE.value, unit=Unit.KWH.value)
for addr, dev in plugs.items():
asyncio.run(dev.update())
item = ThreeLineListItem(text=dev.alias, secondary_text= "Current Reading: {:.2f}".format(dev.emeter_realtime['power'] / 100) + " kW",tertiary_text= "IP Address: " + addr)
item.bind(on_release=self.change_page)
self.mdlistid.add_widget(item)
item = TwoLineListItem(text= devices[0].device_name, secondary_text= "Current Reading: " + str(usage_over_time[3]) + "kWh")
item.bind(on_release=self.change_page)
self.mdlistid.add_widget(item)
def change_page(self,*args):
self.manager.current = 'page2'
class Page2(Screen):
pass
class SM(ScreenManager):
pass
class MainApp(MDApp):
def build(self):
Builder.load_file('app.kv')
return SM()
MainApp().run()
app.kv
<SM>:
Page1:
name: 'page1'
Page2:
name: 'page2'
<Page1>:
mdlistid:mdlistid
MDBottomNavigation:
MDBottomNavigationItem:
name: 'devices'
text: 'Devices'
BoxLayout:
orientation: 'vertical'
Button:
size_hint_y:.1
text: 'Seek Devices'
on_release: root.create_new_item()
MDList:
size_hint_y:.9
id: mdlistid
MDBottomNavigationItem:
name: 'predictions'
text: 'Predictions'
BoxLayout:
orientation: 'vertical'
MDList:
size_hint_y: .9
OneLineListItem:
text: 'Predictions go here!'
MDBottomNavigationItem:
name: 'recommendations'
text: 'Recommendations'
BoxLayout:
orientation: 'vertical'
MDList:
size_hint_y: .9
OneLineListItem:
text: 'Recommendations go here!'
<Page2>:
Button:
text: 'Go Page 1'
size_hint:None,None
size: 250,250
pos_hint: {'center_x':.5,'center_y':.5}
on_release: root.manager.current = 'page1'
【问题讨论】:
标签: python kivy kivy-language kivymd