[英]Referencing methods of a class from within a different class using kivy
我有一個具有多個屏幕的應用程序,並且試圖從另一個屏幕中調用ScreenOne的方法。 該代碼是一個最小的示例。
當我在第二個屏幕中時,我想知道引用ScreenOne的此方法的正確方法。
cart_list = {}
class ScreenOne(Screen):
def update_cart(self):
cart_list.update({'Item one': 1.00})
for key, value in cart_list:
print(key, value)
class ScreenTwo(Screen):
pass
關聯的kv代碼如下
ScreenTwo:
Button:
id: item_1
text: "Add to cart"
on_press: MainScreen.update_cart()
id
添加到ScreenOne。 manager
,為您提供所用ScreenManager的實例。 root.manager.ids.screen_one.update_cart()
引用該方法 以下是Python腳本中所需的一些次要更新。
update_cart
cart_list
聲明為global
.items()
追加到cart_list
例如for key, value in cart_list.items():
from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
cart_list = {}
class ScreenOne(Screen):
def update_cart(self):
global cart_list
cart_list.update({'Item one': 1.00})
for key, value in cart_list.items():
print(key, value)
class ScreenTwo(Screen):
pass
class TestApp(App):
def build(self):
return Builder.load_file('main.kv')
if __name__ == '__main__':
TestApp().run()
#:kivy 1.11.0
ScreenManager:
ScreenOne:
id: screen_one
name: 'screen1'
ScreenTwo:
id: screen_two
name: 'screen2'
<ScreenOne>:
BoxLayout:
Button:
text: 'Goto Screen Two'
on_press: root.manager.current = 'screen2'
Button:
text: 'Quit'
<ScreenTwo>:
Button:
id: item_1
text: "Add to cart"
on_press: root.manager.ids.screen_one.update_cart()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.