使用ScreenManag释放按钮时的初始屏幕(单位:kv)

2024-04-19 10:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初学者Kivy开发,我需要你们的一些建议。 我使用ScreenManager在屏幕之间进行跳转,据我所知,所有的屏幕都是在应用程序启动之后初始化的,我需要用以前屏幕的某些属性来初始化它们,比如,选择类别或其他东西。有什么办法吗?你知道吗

CategorySelectScreen中有两个按钮都代表特定的类别,我希望它们向DictScreen发送一个字符串属性,在那里它将用作CategorySelect方法中的一个参数,该方法过滤项目列表,但问题是,应用程序在启动时需要该参数,如果没有该参数,解释器只会抛出错误。你知道吗

另外,我认为我使用kivy的方式非常糟糕,你能看看我的代码,给我一些专业的提示吗?提前谢谢,干杯:)

kv文件:http://pastebin.com/UdvGS7Wv

py文件:http://pastebin.com/gJn9Mrip


Tags: 文件方法com应用程序http参数属性屏幕
1条回答
网友
1楼 · 发布于 2024-04-19 10:23:36

当你声明你的屏幕决定什么对象将是它的输入。然后将此对象设为属性。在那之后,安装在。。。回调,在此回调中使用基于此输入对象的值的小部件构建屏幕。例如:

class DictScreen(Screen):
   category_selected = ObjectProperty(None)

   def on_category_selected(self, instance, value):
      category_selected = value
      self.clear_widgets()
      self.add_widget(Button(text=category_selected.name))

在上一个屏幕中,在切换到DictScreen之前,从应用程序根ID,然后将所选类别分配给它,然后使用屏幕管理器设置新的当前屏幕。这样,您的DictScreen将立即与choosen类别建立之前,您切换到它。你知道吗

在切换到DictScreen之前获取其实例”如何执行此操作?这里有很好的解释: https://kivy.org/docs/api-kivy.uix.widget.html?highlight=widget#kivy.uix.widget.Widget.ids

相关问题 更多 >