- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我正在构建一个井字棋游戏(因为它的结构非常相似)我希望结果显示在弹出窗口中,并带有一个新的游戏按钮,并且我希望此弹出窗口允许我访问设置(使用另一个按钮)并更改它们,始终留在弹出窗口中,然后离开并最终关闭它并开始一款新游戏。
我希望我可以保持事物有序,因此有一个单独的弹出类,我可以在其中构建自定义弹出窗口。
我有 newgame 方法和重置方法作为我的游戏网格类的方法,很明显。另一方面,更改设置的方法位于自定义设置类上
在设计弹出类时,如何将其按钮(例如新游戏)绑定(bind)到完全不同的类中包含的方法?我看过一些 kv 示例,它们通常使用 root.blabla.method 来访问位于同一棵树的不同位置(在 .kv 文件中)的方法,但在这里我尝试访问的方法超出了树!
我会尝试添加一些示例代码以使其更加清晰
class Settings():
def changeSettings(self):
....
class GmeGrid(GridLayout):
def newGame(self):
....
def reset(self):
...
class customPopup(Popup):
pass
然后,在 .kv 文件上,我希望可以将一些弹出窗口的按钮绑定(bind)到 newGame 并更改设置方法
这里的问题是我应该将 popop 类上的按钮绑定(bind)到完全不同的类的方法,但我不知道如何做到这一点(尤其是在 .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()
这比假设父级具有设置更好,因为如果您更改保存设置的位置,则只需更改一个引用。
关于python - Kivy:访问不同类上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770703/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!