【问题标题】:Fixed window size for Kivy programs固定 Kivy 程序的窗口大小
【发布时间】:2016-09-06 23:01:39
【问题描述】:

有什么方法可以让 Kivy 程序的窗口大小保持不变?固定在某种意义上它的窗口大小不能增加或减少。例如,我想要一个窗口大小为 500x500 的 Kivy 程序,最终用户不能更改窗口大小或将其变为全屏。我尝试将高度、宽度、最小高度和最小宽度都设置为相同的值,但我仍然可以更改窗口大小并全屏显示。

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    有一种方法可以配置应用以禁用调整大小

    from kivy.config import Config
    Config.set('graphics', 'resizable', False)
    

    同样,您可以设置窗口的默认宽度-高度。
    记住一些事情。在您的应用程序开始时这样做,它将仅保留该应用程序的设置。但是,如果您随后运行Config.write(),您会将设置保存在配置文件中。

    Config.set 应该在导入任何其他 Kivy 模块之前使用。理想情况下,这意味着在 main.py 脚本的开头设置它们。 或者,您可以使用永久保存这些设置 Config.set 然后Config.write。在这种情况下,您将需要重新启动 使更改生效的应用程序。请注意,这种方法将 影响系统范围内的所有 Kivy 应用。

    阅读this wiki 文章了解更多信息。

    【讨论】:

    • 天哪,我太傻了。我完全错过了维基的那部分。 :\ 但是你能解释一下如果我在开始时 Config.set 的意思,它只会保留那个应用程序的设置吗?
    • @ParthibBiswas 如果您不进行Config.write() 调用,它不会将设置应用于所有应用程序,仅针对此应用程序,这可能是您想要的。
    【解决方案2】:

    实际上有很多方法可以做到这一点,也就是说其中许多方法取决于您编写代码的方式,并且由于您没有给我们一个示例,我只能向您展示基本示例...

    举例来说,你没有使用 kivy deign 语言,而你正在使用直接 python 进行项目,你可以通过以下方式设置一个 Root 小部件

    Root = Widget(size = (500,500))
    

    您也可以避免这种情况,例如简单地这样做

    Window.size = (500, 500)
    

    现在,如果您使用的是 kv 设计语言,这很容易,只是您需要在 .kv 文件中设置画布、矩形等的大小。

    正如@Leva7 提到的,你也可以使用例如

    from kivy.config import Config
    Config.set('graphics', 'resizable', '0') #0 being off 1 being on as in true/false
    Config.set('graphics', 'width', '500')
    Config.set('graphics', 'height', '500')
    

    注意上面的(即Config.set())应该放在源代码顶部靠近import的部分!

    【讨论】:

      【解决方案3】:

      你可以在 kivy-1.10.0+ 上这样给予

      import kivy
      from kivy.app import App
      from kivy.core.window import Window
      from kivy.config import Config
      kivy.config.Config.set('graphics','resizable', False)
      
      
      
      class MyApp(App):
          def build(self):
              Window.size = (1280,720)
      MyApp().run()
      

      【讨论】:

        【解决方案4】:

        默认情况下,上述配置不适用于 RPi。

        Window.size(500,500)
        

        无效。 如果有人需要禁用全屏并希望完全控制其 RPi 上的屏幕大小:

        disable kivy fullscreen

        要做的步骤:

        sudo raspi-config 
        
        Advanced Options ->
        GL Driver ->
        G1 GL (Full KMS)->
        OK ->
        Reboot
        

        使用 Python3.5 在 RPi 3B Stretch 上测试

        【讨论】:

          【解决方案5】:

          固定大小的一种不吸引人的方法是添加事件侦听器。

          from kivy.core.window import Window
          
          _fixed_size = (425, 700) #desired fix size
          
          def reSize(*args):
             Window.size = _fixed_size
             return True
          Window.bind(on_resize = reSize)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-03-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-13
            • 1970-01-01
            相关资源
            最近更新 更多