python - 如何在 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"
解决方案
推荐阅读
- html - Flex 显示为按钮提供自动高度
- javascript - 在 REACT 中更改动态生成的组件的类别而不为每个组件手动创建单独的状态?
- android - 如何在 Flutter 中用 CircleAvatar 替换抽屉的汉堡包图标?
- list - Haskell 列表理解创建所有可能的值组合
- python - 熊猫从变量中读取excel
- c - 函数指针原型,它以三个整数指针作为参数并返回字符指针
- javascript - 函数的默认解构参数
- sql - SQL:选择与特定人借过相同书籍的人的姓名
- python - 带有 Tensorflow 的 Anaconda 3
- python - 将数组中的 str 转换为字节并将其保存为 CSV(在 Python 中)