带有 Kivy 图像的动态按钮

Posted

技术标签:

【中文标题】带有 Kivy 图像的动态按钮【英文标题】:Dynamic buttons with images with Kivy 【发布时间】:2019-05-12 02:01:28 【问题描述】:

问题

我有一个比例为 1:1 的圆形图像按钮,当我运行代码(在底部)时,程序会创建一个相同比例的屏幕,但我可以调整它的大小并更改比例和大小,但图像不会随着屏幕的增长而增长,因此随着屏幕的增长它使用的空间更少。我试图为size_hint: 设置值,但它会扭曲图像,减去一个比例。我怎样才能使这个按钮适应任何比例和大小,而不失真,并且空间与屏幕大小成正比?

生成的屏幕 (1:1)

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

代码

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】:

您可以在kv 文件中将Botao 的大小设置为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

【讨论】:

以上是关于带有 Kivy 图像的动态按钮的主要内容,如果未能解决你的问题,请参考以下文章

在kivy中的按钮内组合图像和文本

Kivy 按钮背景图像大小

Kivy——图像作为按钮

如何在 Kivy 或 KivyMD 中创建类似快照的按钮?

带有图像的动态按钮

带有kivy的android上的后退按钮功能