当前位置: 首页 > 面试题库 >

Kivy:访问其他类上的方法

太叔京
2023-03-14
问题内容

假设我正在构建一个井字游戏(因为它与结构非常相似),我希望结果在弹出窗口中显示,并带有一个新的游戏按钮,并且希望此弹出窗口允许我访问设置(另一个按钮)并对其进行更改,使其始终位于弹出窗口中,然后离开并最终将其关闭并开始新游戏。

我希望我可以保持秩序,因此有一个单独的弹出窗口类,可以在其中构建自定义弹出窗口。

显而易见,我将newgame方法和reset方法作为我的游戏网格类的方法。另一方面,更改设置的方法是在自定义设置类上

在设计弹出类时,如何将其按钮(例如新游戏)绑定到完全不同的类中包含的方法?我看过一些kv示例,它们通常使用root.blabla.method来访问位于同一棵树的不同位置(在.kv文件中)的方法,但是在这里我尝试使用的方法不存在那个树!

我将尝试放置一些示例代码以使其更加清晰

class Settings():

    def changeSettings(self):
        ....

class GmeGrid(GridLayout):

    def newGame(self):
        ....

    def reset(self):
        ...

class customPopup(Popup):

    pass

然后,在.kv文件上,我希望可以将一些弹出按钮绑定到newGame并更改设置方法

这里的问题是我应该将popop类上的按钮绑定到完全不同的类上,而我不知道该怎么做(尤其是在.kv文件上)


问题答案:

只要窗口小部件已完全实例化并添加到窗口小部件树中,您就可以使用它self.parent来访问窗口小部件的父级。您可能会考虑通过传递引用:

Builder.load_string('''
<CustomPopup>:
    BoxLayout:
        orientation: 'vertical'
        # some settings stuff here
        BoxLayout:
            orientation: 'horizontal'
            Button:
                text: 'New Game'
                on_press: root.do_new_game()
''')

class CustomPopup(Popup):
    settings_widget = ObjectProperty()
    new_game = ObjectProperty()

    def do_new_game(self):
        self.settings_widget.some_property = some_value
        self.dismiss()
        self.new_game()

p = CustomPopup(settings_widget=my_widget, new_game=mygame.newGame)
p.open()

最好假设父级具有设置,因为如果更改设置的保留位置,则只需更改一个引用。



 类似资料:
  • 问题内容: 我有这段代码可以正常工作: 但是,如果方法是从不同的ClassLoader加载的类中的方法,则它将抛出: 如何将实例传递给? 问题答案: 如此回答所述,查找模式必须包含私有访问才能被接受。基本上,这意味着调用者 是 指定的类,因为它创建了特定的查找实例,或者查找类具有足够的信任关系,可以将查找对象传递给执行实际调用的代码(例如,在使用指向时隐含到特定的引导方法)。 从Java 9开始,

  • 问题内容: 我最近拾起Java并遇到了问题。我有几个具有不同类的文件,但是我无法弄清楚如何访问文件中声明了其他类之外的其他类的对象。例如: 我不确定如何从其他文件和类本身有效访问其他类的这些对象?我知道我可以使对象静态化,然后通过它们所在的类将它们作为变量进行访问,但这似乎有点违反直觉?我来自面向对象较少的编程背景,因此我仍在尝试了解Java的编程风格。 问题答案: 您可能只想要这样的东西: 希望

  • 由于某种原因,我有一个LinkedList类无法访问我的学生类方法。我不明白为什么会发生这种情况,因为我的linkedlist类是Student类型。我一直收到一个错误:找不到symbol symbol:method getName()位置:Student类型的变量数据,其中Student是一个类型变量:Student extends对象在类节点中声明。下面的方法来自我的链表类 getGpa是我的

  • 问题内容: 我的班级有一个名为DataStorage的哈希图: 如何在另一个类中访问此HashMap中的数据? 问题答案: 将HashMap创建为实例变量,并提供一种将其访问类API的方法:

  • 问题内容: 我正在尝试使用当前位置在android中提交用户注册表格。我是android和java开发的新手。当我尝试在我的名称值对代码中访问onLocationChanged方法的myLat和myLan时,无法同时找到这两个变量。如何访问我的名称/值对代码中的两个变量。 问题答案: 您可能应该研究范围和成员变量。问题是,您不能在一个方法中声明一件事,然后尝试从另一方法访问它。 因此,我们将该事物

  • 考虑以下场景。 现在,我在一个实现类中实现这样一个接口,并在这个类中重写上面的方法。 我想知道如何访问接口中的原始默认方法。谢谢