Kivy:如何更改窗口大小?

54
我开始使用kivy编写程序,但我对它如何处理尺寸有些难以理解。
例如:
import kivy
kivy.require('1.5.1')

from kivy.app import App
from kivy.uix.button import Button

class MyApp(App):
    def build(self): return Button(text='Some text')

MyApp().run()
上述程序是可行的,但它会创建一个巨大的窗口。尝试设置size=(100, 100)没有任何效果。设置size_hint=(None, None)可以显示一个具有正确大小的按钮,但它随机放置在一个仍然巨大的窗口中。 尝试设置MyApp的大小也没有改变任何东西。
如何创建与按钮大小相同的窗口?这应该是一个足够简单的任务,但查看文档和示例后我找不到任何关于此的信息。
4个回答

118

目前有两种方法:

  • 在创建窗口之前:

    import kivy
    kivy.require('1.9.0')
    
    from kivy.config import Config
    Config.set('graphics', 'width', '200')
    Config.set('graphics', 'height', '200')
    
  • 窗口创建后动态更改:

  • from kivy.core.window import Window
    Window.size = (300, 100)
    

这个完美地解决了问题,我之前也遇到了同样的问题,但是找不到任何帮助,幸运的是我找到了这个...非常感谢Martin。 - Cid-El
有没有办法使窗口适合整个屏幕?不考虑分辨率? - Yair
@Yair 你是指全屏还是窗口但大小与屏幕相同? - martin
抱歉,我真的看不出有什么区别。我想我是指全屏。 - Yair
好的,现在我可以看到区别了。我实际上是指窗口大小。我正在查看https://kivy.org/docs/api-kivy.core.window.html,但找不到正确的命令。 - Yair

20

使用这个:

from kivy.core.window import Window
Window.size = (300, 100)
如果您使用 <\p>
from kivy.config import Config
Config.set('graphics', 'width', '200')
Config.set('graphics', 'height', '200')
Config.write()

这将导致默认屏幕尺寸的丢失!默认屏幕尺寸非常有用。


1
解释为什么这是“非常有用”的想法可能很好。 - PhoneixS
嗯,如果你想保持“默认”屏幕尺寸,请不要使用Config.write(),它在运行时更改中是不必要的。确保在from kivy.app include App这一行之前设置好尺寸,对于KivyMD来说是from kivymd.app include MDApp - Android Control

10

我想评论马丁的答案,但是我没有足够的声望。在设置配置文件时,请确保“写入”您的更改:

from kivy.config import Config
Config.set('graphics', 'width', '200')
Config.set('graphics', 'height', '200')
Config.write()

如果你对将信息提交到数据库有所了解,那么它就与这个过程完全相同。


3
Config.write() 方法将更改永久保存。它们将成为默认设置。 - Holger
1
要明确的是,这将成为所有Kivy应用程序的默认设置,我不知道这是否是一个好主意。 - PhoneixS
“就像把信息提交到数据库一样,…” — 是确切地还是类似 - MarianD
“这就像是将信息提交到数据库一样,……” — 是 exactly 还是 like - MarianD
我们会选择“喜欢”:3 - Aaron Bell

1
使用Config.write()将会把你的更改设置为默认值。如果你不小心运行了这个命令并希望恢复更改,你可以再次运行Config.write()并使用默认值(从而恢复更改),或者你可以用文本编辑器打开$HOME/.kivy/config.ini并进行编辑。

1
这更像是一条评论而不是答案,请不要将评论发布为答案。 - PhoneixS

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