如何使用Kivy更改窗口的大小?我一直在寻找,我可以改变几乎所有的东西,除了窗口的大小,东西进入。
从示例图片文件中:main.py
#!/usr/bin/kivy
'''
Pictures demo
=============
This is a basic picture viewer, using the scatter widget.
'''
import kivy
kivy.require('1.0.6')
from glob import glob
from random import randint
from os.path import join, dirname
from kivy.app import App
from kivy.logger import Logger
from kivy.uix.scatter import Scatter
from kivy.properties import StringProperty
# FIXME this shouldn't be necessary
from kivy.core.window import Window
class Picture(Scatter):
'''Picture is the class that will show the image with a white border and a
shadow. They are nothing here because almost everything is inside the
picture.kv. Check the rule named <Picture> inside the file, and you'll see
how the Picture() is really constructed and used.
The source property will be the filename to show.
'''
source = StringProperty(None)
class PicturesApp(App):
def build(self):
# the root is created in pictures.kv
root = self.root
# get any files into images directory
curdir = dirname(__file__)
for filename in glob(join(curdir, 'images', '*')):
try:
# load the image
picture = Picture(source=filename, rotation=randint(-30,30))
# add to the main field
root.add_widget(picture)
except Exception as e:
Logger.exception('Pictures: Unable to load <%s>' % filename)
def on_pause(self):
return True
if __name__ == '__main__':
PicturesApp().run()
pictures.kv
#:kivy 1.0
#:import kivy kivy
#:import win kivy.core.window
FloatLayout:
canvas:
Color:
rgb: 1, 1, 1
Rectangle:
source: 'data/images/background.jpg'
size: self.size
BoxLayout:
padding: 10
spacing: 10
size_hint: 1, None
pos_hint: {'top': 1}
height: 44
Image:
size_hint: None, None
size: 24, 24
source: 'data/logo/kivy-icon-24.png'
Label:
height: 24
text_size: self.width, None
color: (1, 1, 1, .8)
text: 'Kivy %s - Pictures' % kivy.__version__
<Picture>:
# each time a picture is created, the image can delay the loading
# as soon as the image is loaded, ensure that the center is changed
# to the center of the screen.
on_size: self.center = win.Window.center
size: image.size
size_hint: None, None
Image:
id: image
source: root.source
# create initial image to be 400 pixels width
size: 400, 400 / self.image_ratio
# add shadow background
canvas.before:
Color:
rgba: 1,1,1,1
BorderImage:
source: 'shadow32.png'
border: (36,36,36,36)
size:(self.width+72, self.height+72)
pos: (-36,-36)
我希望能够在FloatLayout或Canvas中放置一个大小标签,以便调整窗口的大小,但它似乎不起作用。
我如何确定多大的画布(或包含窗口-也许我在错误的条款搜索)将是应用程序运行之前?
编辑-我发现,在.py文件的includes部分添加以下内容是有效的:
from kivy.config import Config
Config.set('graphics', 'width', '640')
Config.set('graphics', 'height', '1163')
是否有一种方法可以使用。kv文件来做到这一点?
不能设置,单位为kv。您可以像上面那样使用Config
设置它,或者您可以稍后通过在Window
对象上设置大小来更改窗口大小:
from kivy.core.window import Window
Window.size = (640, 1163)
要管理窗口配置,可以在源文件上使用import from kivy.config import Config
。
from kivy.config import Config
Config.set('graphics', 'resizable', '0')
Config.set('graphics', 'width', '640')
Config.set('graphics', 'height', '480')
不要使用
from kivy.core.window import Window
使这些不起作用
Config.set('graphics', 'width', '200')
Config.set('graphics', 'height', '400')