如何更改Kivy应用的设置类型和位置?

时间:2018-11-19 10:52:25

标签: python python-3.x kivy

我无法找出如何更改我的kivy应用程序中使用的显示设置面板的类型。我目前使用以下代码创建面板:

def build_config(self, config):
    config.read("settings.ini")
    App.build_config(self, config)

def build_settings(self, settings):
    settings.size_hint = (0.8, 0.8)
    settings.pos = (200,200)
    settings.interface_cls = SettingsWithSidebar()
    settings.add_json_panel("General Settings", self.config,
                            filename="settings_general.json")
    settings.add_json_panel("Analysis", self.config,
                            filename="settings_analysis.json")
    App.build_settings(self, settings)

那给了我标准的SettingsWithSidebar面板,看上去比较难看。我想将其更改为标准Settings面板,该面板看起来更漂亮,但无法找到方法。 我查看了docs并发现了interface_cls属性,但是将其值更改为Settings()SettingsWithSidebar()似乎无济于事。

我的第二个问题是我不知道如何根据应用程序的位置设置设置面板的位置(200,200是占位符)。我知道如何用kv语言来实现,但是我不知道在创建应用程序之前如何引用该应用程序的pos。我确实想将设置面板的中心绑定到应用程序窗口的中心,但是我找不到有关如何完成该任务的资源。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决问题的方法: 要使用除标准面板以外的任何其他“设置”面板,必须更改 App 类的settings_cls属性,而不是设置本身。这可以通过添加

来完成
self.settings_cls = Settings # Desired settings class

应用程序的构建方法。

要更改“设置”弹出窗口的位置,必须更改赋予应用程序类的build_settings方法的“设置”对象的pos_hint。示例:要将设置窗口的大小更改为应用程序大小的90%,然后将其放置在应用程序的中心,必须添加:

settings.pos_hint = ({"center_x": .5, "center_y": .5})
settings.size_hint = (0.9, 0.9)
在调用App.build_settings(self, settings)之前

到build_settings方法(其中settings是传递给该方法的设置对象)。