Python 在kivy中的两个屏幕类之间传递变量
我有两个screen类Python 在kivy中的两个屏幕类之间传递变量,python,class,kivy,Python,Class,Kivy,我有两个screen类ScreenOne和ScreenTwo,我想在它们之间传递一个值。我正在使用ScreenManager,我正在使用self.manager.current()=“screen2” 我希望在不使用.kv文件的情况下执行此操作。我不是编程新手,但我是kivy新手,我没想到这会如此复杂。我是否可以通过另一个管理器函数或类似的方式传递值 class ScreenOne(Screen): def __init__(self,**kwargs):
ScreenOne
和ScreenTwo
,我想在它们之间传递一个值。我正在使用ScreenManager,我正在使用self.manager.current()=“screen2”
我希望在不使用.kv文件的情况下执行此操作。我不是编程新手,但我是kivy新手,我没想到这会如此复杂。我是否可以通过另一个管理器函数或类似的方式传递值
class ScreenOne(Screen):
def __init__(self,**kwargs):
super (ScreenOne,self).__init__(**kwargs)
my_box1 = GridLayout(cols=3,spacing=50,size_hint_y=None,size_y=100,)
my_box1.bind(minimum_height=my_box1.setter('height'))
drink_list = get_drink_list()
for drink in drink_list:
button = Button(text=drink,
size_hint_y=None, height=250, background_normal=get_drink_image(drink),font_size='15dp',color=[0,0,0,1])
button.bind(on_press=self.changer)
my_box1.add_widget(button)
root = ScrollView(size_hint=(None, None), size=(600, 400),
pos_hint={'center_x':.5, 'center_y':.5},bar_width='10dp')
root.add_widget(my_box1)
self.add_widget(root)
def changer(self, instance,*args):
self.manager.current = instance.text #button name
class ScreenTwo(Screen):
def __init__(self,**kwargs):
super (ScreenTwo,self).__init__(**kwargs)
# print drink_ordered
#creating layouts
my_box1 = GridLayout(cols=2)
description_box = BoxLayout(orientation='vertical', spacing=30)
#creating objects
drink_image = Image(source="drink_pics/" + self.name + ".jpg")
drink_name = Label(text=self.name,font_size='24dp',size_hint_y=None, height=100)
empty_box = Label(text="",font_size='24dp',size_hint_y=None, height=20)
ingredient_list = get_drink_ingredients(self.name)
description = ''
for count in range(len(ingredient_list)):
if ((count % 3 == 0) and (count != 0)):
description += "\n"
description += ingredient_list[count] + ", "
description = description[:-2]
description = description.replace('_', ' ')
drink_description = Label(text="Description: " + description,font_size='15dp'
,size_hint_y=None, height=100)
drink_order = Button(text="Order Drink",
size_hint_y=None, height=100, size_hint_x=None, width=385, padding=[100,100])
drink_order.bind(on_press=self.changer)
#adding to widgets
my_box1.add_widget(drink_image)
description_box.add_widget(drink_name)
description_box.add_widget(drink_description)
description_box.add_widget(drink_order)
description_box.add_widget(empty_box)
my_box1.add_widget(description_box)
self.add_widget(my_box1)
def changer(self,*args):
self.manager.current = 'next screen'
你能发布你的代码吗?我添加了代码,但是,我现在实现它的方式真的很糟糕。在ScreenOne的changer函数中,我想将变量传递给ScreenTwo,并传递按钮名(instance.text)。我不确定您想要什么。如果只是将变量从一个屏幕
ScreenOne
传递到另一个屏幕ScreenTwo
,您可以使用self.manager.get_screen('screen2'))…
在ScreenOne中。好的,我可以在ScreenOne中放入一个变量,比如self.test,然后在ScreenTwo中调用self.manager.get_screen('screen1')之类的变量.test?是的,这是一种方法。你能发布你的代码吗?我添加了代码,但是,我现在实现它的方法真的很糟糕。在ScreenOne的changer函数中,我想将变量传递给ScreenTwo,并传递按钮名(instance.text)。我不确定您想要什么。如果只是将变量从一个屏幕ScreenOne
传递到另一个屏幕ScreenTwo
,您可以使用self.manager.get_screen('screen2'))…
在ScreenOne内部。好的,我可以在ScreenOne中放入一个变量,比如self.test,然后在ScreenTwo中调用self.manager.get_screen('screen1')。test?是的,这是一种方法。