在KivyMD中从mddropdown菜单更改2个按钮的文本

2024-09-29 01:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在从MDDropdownMenu中单击MDMenuItem后,在两个不同的按钮上更改按钮文本有问题-只有一个按钮可以更改自己的文本。 每个按钮必须分别更改文本。在

在这种情况下-两个按钮,两个下拉菜单,不同菜单中的不同标签,每个按钮在下拉列表中都有自己的文本。在

有主.py公司名称:

from kivy.app import App
from kivymd.theming import ThemeManager
from kivy.uix.screenmanager import Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout

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)
            ]

    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()

有主电压kv公司名称:

^{pr2}$

谢谢你的帮助,很抱歉英语不好!在


Tags: textfrom文本importselfvaluedefcallback
1条回答
网友
1楼 · 发布于 2024-09-29 01:22:09

该解决方案需要对Python代码和kv文件进行以下增强。在

在主.py在

  1. 在类MyScreen的构造函数中添加一个类属性self.menu_button = None

代码段-py文件

class MyScreen(Screen):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        ...
        self.menu_button = None

kv文件

  1. MDRaisedButton:on_release事件中初始化{}
  2. app.root.ids.mainbutton.text替换为app.root.menu_button.text

代码段文件-kv

^{pr2}$

输出

Result

相关问题 更多 >