Kivy-是否可以在按钮上添加上标或下标文本

时间:2018-03-01 13:57:28

标签: python kivy

正如标题所示,除了按钮中心的文字外,我想把文字放在按钮的任何一个角落里。一种可能的方法是使用背景图像。但我想知道,它能真的完成吗?

import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.lang import Builder
Builder.load_string("""
<ButtonGridLayout>:
    rows: 2
    padding: 10
    spacing: 10
    Button:
        text: 'Hello'
    Button:
        text: 'Hellow'
""")
class ButtonGridLayout(GridLayout):
    pass
class ButtonApp(App):
    def build(self):
        return ButtonGridLayout()
if __name__=='__main__':
    ButtonApp().run()

此图像中的蓝色圆圈内 ButtonApp

2 个答案:

答案 0 :(得分:0)

您可以使用Unicode来获取上标和下标。例如,第二个按钮中的文字可以是text: 'Hellow\u2074'Hellow带有上标4.查看unicode HOWTOsuperscripts-and-subscripts

答案 1 :(得分:0)

您可以在按钮内添加标签:

这里我创建了一个帮助规则,以避免重复我想如何调整一些标签的大小

<AutoSizedLabel@Label>:
    size_hint: None, None
    size: self.texture_size
    padding: 10

然后,我在我的按钮内添加一个floatlayout,按钮的大小/位置,使这些标签的位置更容易,我还创建动态属性,以便能够轻松传递这些标签的文本值,我窝它们在FloatLayout中,使用pos_hint系统来定位它们。

<MyCrazyButton@Button>:
    top_right_text: ''
    top_left_text: ''
    bottom_right_text: ''
    bottom_left_text: ''

    FloatLayout:
        size: root.size
        pos: root.pos

        AutoSizedLabel:
            text: root.top_right_text or ''
            pos_hint: {'top': 1, 'right': 1}

        AutoSizedLabel:
            text: root.bottom_right_text or ''
            pos_hint: {'y': 0, 'right': 1}

        AutoSizedLabel:
            text: root.top_left_text or ''
            pos_hint: {'top': 1, 'x': 0}

        AutoSizedLabel:
            text: root.bottom_left_text or ''
            pos_hint: {'y': 0, 'x': 0}

然后我可以像这样使用它:

MyCrazyButton:
    text: 'boring text'
    bottom_left_text: 'bl'
    top_left_text: 'tl'
    bottom_right_text: 'br'
    top_right_text: 'tr'

编辑:当然,我做了所有可能性,如果你不需要所有这些可能性,你可以通过从规则中删除它们来避免创建许多不必要的小部件!