首页 > 解决方案 > 如何在 kivy 中制作具有图像作为按钮和文本的自定义类?

问题描述

如何在kivy中制作具有图像/ png图标作为按钮和文本的自定义类,并使用该自定义类避免代码中的重复行?

我是 kivy 和 python 的新手。基本思想是创建一个类,它由一个圆形矢量图标作为投资组合和它下面的投资组合名称组成。所以我可以在需要的地方多次复制它。
请帮忙。提前致谢。

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.config import Config
from kivy.uix.label import Label
from kivy.uix.button import Button

class custombutton(Button, Label, BoxLayout):
    pass

class pfselectwindow(BoxLayout):
    Config.set('graphics', 'borderless', 'True')
    Config.set('graphics', 'width', '900')
    Config.set('graphics', 'height', '600')
    Config.write()
    def __init__(self, **kwargs):
        super().__init__(**kwargs)


class pfselectApp(App):
    def build(self, **kwargs):
        return pfselectwindow()

if __name__ == "__main__":
    app =pfselectApp()
    app.run()

.kv 文件

<custombutton@BoxLayout+Button+Label>:
    orientation:"vertical"
    Button:
        text:""
        size_hint:None, None
        size:80,80
        Image:
            source:"F:/untitled/accounticon.png"
    Label:
        size_hint_y:None
        height:5
        text:""

<pfselectwindow>:
    id:select_portfolio
    orientation:"vertical"
    padding:10
    #left with 580
    BoxLayout:
        size_hint_y:None
        size_hint_y:100
        #left with 530
        canvas.before:
            Color:
                rgba:(0.5,0.5,0.5,0.5)
            Rectangle:
                size:self.size
                pos:self.pos
        Label:
            text:"SELECT PORTFOLIO"


    BoxLayout:
        padding:10
        orientation:"vertical"
        spacing:5
        size_hint_y:None
        size_hint_y:430
        #left with 230
        canvas.before:
            Color:
                rgba:(0.6,0.6,0.6,0.6)
            Rectangle:
                size:self.size
                pos:self.pos

        StackLayout:
            orientaton:"lr-tb"
            spacing:5
            Button:
                size_hint:None,None
                size:80,80
                text:"P1"
            Button:
                size_hint:None,None
                size:80,80
                text:"P2"
            Button:
                size_hint:None,None
                size:80,80
                text:"+"

    BoxLayout:
        size_hint_y:None
        size_hint_y:50
        #left with 50
        canvas.before:
            Color:
                rgba:(0.5,0.5,0.5,0.5)
            Rectangle:
                size:self.size
                pos:self.pos
        Label:
            text:"status"

在此处输入图像描述

标签: pythonkivykivy-language

解决方案


推荐阅读