固定 Kivy 程序的窗口大小
Posted
技术标签:
【中文标题】固定 Kivy 程序的窗口大小【英文标题】:Fixed window size for Kivy programs 【发布时间】:2016-09-06 23:01:39 【问题描述】:有什么方法可以让 Kivy 程序的窗口大小保持不变?固定在某种意义上它的窗口大小不能增加或减少。例如,我想要一个窗口大小为 500x500 的 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)
【讨论】:
以上是关于固定 Kivy 程序的窗口大小的主要内容,如果未能解决你的问题,请参考以下文章