具有Kivy图像的动态按钮

时间:2018-12-11 05:43:17

标签: python image button kivy

问题

我有一个带有比例为1:1的圆形图像的按钮,当我运行代码时(在底部),程序创建了一个具有相同比例的屏幕,但是我可以调整其大小并更改比例和尺寸,但图像不会随着屏幕的增长而增长,因此随着屏幕的增长,它占用的空间更少。我试图为size_hint:设置值,但是它会使图像失真,减一个比例。如何使该按钮适应任何比例和大小,而不会变形,并且其空间与屏幕尺寸成比例?

生成的屏幕(1:1)

Generated Screen

调整大小的屏幕(16:9)

Resized Screen

代码

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image

class FloatingApp(App):

    def build(self):
        return FloatLayout()

flApp = FloatingApp()

flApp.run()

.kv文件

<Botao@Button>:
    font_size: 32
    color: 1, 1, 1, 1
    size: 138, 138
    background_normal: 'bd.png'
    background_down: 'bd1.png'
    background_color: 0.88, 0.88, 0.88, 1  
    size_hint: None, None

<FloatLayout>:
    Botao:

        text:"Botao"
        pos_hint: {"center_x": .5, "center_y": .5}

1 个答案:

答案 0 :(得分:1)

您可以根据Botaokv文件中设置root.size的大小。通过使用min(root.size)。您还必须删除size: 138, 138行。

<Botao@Button>:
    font_size: 32
    color: 1, 1, 1, 1
    #size: 138, 138
    background_normal: 'bd.png'
    background_down: 'bd1.png'
    background_color: 0.88, 0.88, 0.88, 1  
    size_hint: None, None

<FloatLayout>:
    Botao:
        size: (min(root.size)*0.5, min(root.size)*0.5)
        text:"Botao"
        pos_hint: {"center_x": .5, "center_y": .5}