正如标题所示,除了按钮中心的文字外,我想把文字放在按钮的任何一个角落里。一种可能的方法是使用背景图像。但我想知道,它能真的完成吗?
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
答案 0 :(得分:0)
您可以使用Unicode来获取上标和下标。例如,第二个按钮中的文字可以是text: 'Hellow\u2074'
,Hellow
带有上标4.查看unicode HOWTO和superscripts-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'
编辑:当然,我做了所有可能性,如果你不需要所有这些可能性,你可以通过从规则中删除它们来避免创建许多不必要的小部件!