如何使用 kivy 更改应用程序的画布或窗口大小 [英] how do you change the canvas or window size of an app using kivy

查看:14
本文介绍了如何使用 kivy 更改应用程序的画布或窗口大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用 Kivy 更改窗口的大小.我一直在四处寻找,几乎可以更改所有内容,除了进入的窗口大小.

How do you change the size of a window using Kivy. I've been searching around and am able to change pretty much everything except the size of the window that things go into.

来自示例图片文件:main.py

From the sample pictures file: 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()

图片.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 中放置一个大小标签以调整窗口大小,但它似乎不起作用.

I'd expect to be able to put a size tag in the FloatLayout or the Canvas in order to resize a window, but it doesn't seem to work.

在应用程序运行之前,我如何确定画布(或包含窗口——也许我在搜索错误的术语)的大小?

How do I determine how large the canvas (or containing window -- perhaps i'm searching on the wrong terms) is going to be before the app is run?

-编辑-我发现在 .py 的包含部分中添加以下内容可以:

-edit- I've found that adding the following in the includes section of the .py works:

from kivy.config import Config 
Config.set('graphics', 'width', '640') 
Config.set('graphics', 'height', '1163')

有没有办法只使用 .kv 文件来做到这一点?

Is there a way of doing this using just the .kv file?

推荐答案

不可以,大小不能设置为kv.您可以像上面那样使用 Config 设置它,或者您可以稍后通过在 Window 对象上设置大小来更改窗口大小:

No, the size cannot be set in kv. You can set it using Config as you do above, or you can change the window size later by setting the size on the Window object:

from kivy.core.window import Window
Window.size = (640, 1163)

这篇关于如何使用 kivy 更改应用程序的画布或窗口大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆