BoxLayout中的多个MDLabel(由AnchorLayout包含)存在一些问题,因此所有MDLabel对象都堆叠在屏幕上的一个位置!
我不知道如何使它们像列表一样居中和分组(带有空格和例如)
请帮我解决这个问题! 非常感谢,对不起,英语不好。
有我的main.py
from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.label import MDLabel
from kivy.uix.screenmanager import Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.metrics import dp, sp, pt
def toast(text):
from kivymd.toast.kivytoast import toast
toast(text)
class MyScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.menu_items = [
{
"viewclass": "MDMenuItem",
"text": "text%d" % i,
"callback": self.callback,
}
for i in range(1, 3)
]
self.menu_button = None
def change_variable(self, value):
print("\nvalue=", value)
self.VARIABLE = value
print("\tself.VARIABLE=", self.VARIABLE)
def callback(self, *args):
toast(args[0])
class MainApp(App):
title = "KivyMD MDDropdownMenu Demo"
theme_cls = ThemeManager()
def build(self):
return MyScreen()
if __name__ == "__main__":
MainApp().run()
并且我的main.kv文件包含:
#:import MDDropdownMenu kivymd.menus.MDDropdownMenu
#:import MDRaisedButton kivymd.button.MDRaisedButton
#:import MDLabel kivymd.label.MDLabel
<MDMenuItem>:
on_release:
app.root.change_variable(self.text)
app.root.menu_button.text = self.text
<MyScreen>:
name: 'myscrn'
AnchorLayout:
anchor_y: 'center'
BoxLayout:
orientation: 'vertical'
size_hint: 0.1, 0.5
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
spacing: dp(10)
MDRaisedButton:
id: mainbutton
size_hint: None, None
size: 3 * dp(48), dp(48)
text: 'MDButton1'
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
opposite_colors: True
on_release:
root.menu_button = mainbutton
MDDropdownMenu(items=root.menu_items, width_mult=4).open(self)
MDRaisedButton:
id: secondbutton
size_hint: None, None
size: 3 * dp(48), dp(48)
text: 'MDButton2'
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
opposite_colors: True
on_release:
root.menu_button = secondbutton
MDDropdownMenu(items=root.menu_items, width_mult=4).open(self)
AnchorLayout:
anchor_y: 'top'
BoxLayout:
orientation: 'vertical'
size_hint: 0.95, 0.5
padding: [0, 0, 0, 0]
spacing: dp(5)
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
MDLabel:
font_size: dp(12)
text: '123'
MDLabel:
font_size: dp(22)
text: '456'
答案 0 :(得分:1)
糟糕,看起来像是一个简单的错误。您在KV Lang上的缩进不正确。您没有将标签正确嵌套到BoxLayout中。
09-04 14:54:44.717 9394 9394 E AndroidRuntime: FATAL EXCEPTION: main
09-04 14:54:44.717 9394 9394 E AndroidRuntime: java.lang.BootstrapMethodError: Exception from call site #3 bootstrap method
09-04 14:54:44.717 9394 9394 E AndroidRuntime: at androidx.biometric.BiometricFragment.<init>(BiometricFragment.java:86)
09-04 14:54:44.717 9394 9394 E AndroidRuntime: at androidx.biometric.BiometricFragment.newInstance(BiometricFragment.java:187)
09-04 14:54:44.717 9394 9394 E AndroidRuntime: at androidx.biometric.BiometricPrompt.authenticateInternal(BiometricPrompt.java:681)
09-04 14:54:44.717 9394 9394 E AndroidRuntime: at androidx.biometric.BiometricPrompt.authenticate(BiometricPrompt.java:658)