Kivy程序的固定窗口大小

7
有没有办法使Kivy程序的窗口大小固定不变? 固定是指其窗口大小无法增加或减小。例如,我想要一个窗口大小为500x500的Kivy程序,最终用户既不能更改窗口大小也不能将其转换为全屏模式。 我尝试将高度,宽度,最小高度和最小宽度都设置为相同的值,但仍然可以更改窗口大小和全屏显示。
5个回答

18

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

from kivy.config import Config
Config.set('graphics', 'resizable', False)
同样的方法,您可以设置窗口的默认宽度高度。 记住一件事。在应用程序开始时这样做,只会为该应用程序保留设置。但是,如果您运行 Config.write() ,则会将设置保存在配置文件中。

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

阅读维基文章了解更多信息。


哦,我真是太傻了。我完全错过了维基的那一部分。但是你能解释一下如果我在开头设置 Config.set,它只会保留该应用程序的设置是什么意思吗? - Parthib Biswas
如果您不执行Config.write()调用,它将不会将设置应用于所有应用程序,而仅适用于此应用程序,这可能是您想要的。@ParthibBiswas - illright

4

实际上,有很多种方法可以做到这一点,但是很多方法都取决于你如何编写代码,因为你没有给我们一个例子,所以我只能向你展示基本的示例...

比如说,如果你没有使用kivy设计语言,而是直接在Python中完成项目,你可以按照以下方式设置一个根部件

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())应该放置在源代码的顶部靠近导入部分!

1
您可以在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()

0
用一个事件监听器来固定大小并不是一个优美的方法。
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)

0

上述配置默认情况下不适用于树莓派。

Window.size(500,500)

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

禁用kivy全屏

操作步骤:

sudo raspi-config 

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

在搭载Python3.5的RPi 3B Stretch上进行了测试


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接