【发布时间】:2021-11-14 06:55:51
【问题描述】:
我正在使用 kivy & kivymd 制作应用程序,其中一部分我希望标签占用与实际文本一样多的空间。
这对于 kivy 本身来说似乎很简单,但由于某种原因,MDLabel 类没有任何作用。我尝试将adaptive_width 属性设置为True,我还尝试将width 直接设置为texture_size[0] 属性,但它们都不起作用(是的,我直接从github安装了kivymd)。
这是我的代码:
from kivy.lang import Builder
from kivymd.app import MDApp
class MainApp(MDApp):
def __init__(self, **kwargs):
super(MainApp, self).__init__(**kwargs)
self.kv = Builder.load_string('''
#:kivy 2.0.0
BoxLayout:
MDLabel:
text: "Supposedly adaptive width (KivyMD)"
font_size: "21sp"
halign: "center"
adaptive_width: True
# I also tried directly setting the width to the texture_size but the results were worse
# size_hint_x: None
# width: self.texture_size[0]
canvas.before:
Color:
rgba: .8, .1, .2, .5
Rectangle:
pos: self.pos
size: self.size
Widget:
MDSeparator:
orientation: "vertical"
Widget:
Label:
text: "Actual adaptive width (Standard Kivy)"
font_size: "21sp"
color: 0, 0, 0, 1
size_hint_x: None
width: self.texture_size[0]
canvas.before:
Color:
rgba: 0, .6, .2, .5
Rectangle:
pos: self.pos
size: self.size
''')
def build(self):
return self.kv
if __name__ == '__main__':
MainApp().run()
【问题讨论】:
标签: python python-3.x kivy kivy-language kivymd