【问题标题】:How to open MDCard when I press a button in kivy(python)?当我在kivy(python)中按下按钮时如何打开MDCard?
【发布时间】:2021-09-20 13:59:17
【问题描述】:

我在屏幕上有一个按钮,当我按下这个按钮时,我想打开 MDCard。我编写的代码与 Popup 相同,但 MDCard 对象没有“打开”属性。如何打开 MyMDCard

#: import Factory kivy.factory.Factory

<Second>:
    FloatLayout:
        Button:
            text:"Open MDCard"
            size_hint: .3, .07 
            pos_hint: {"x":.07, "y":0.25} 
            on_release: Factory.MyMDCard().open()

<MyMDCard@MDCard>
    orientation: "vertical"
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: 'Blue.png'

    FloatLayout:    
        Button:
            id: 'change'

【问题讨论】:

    标签: python kivy kivymd


    【解决方案1】:

    MDCard 不是Popup,它只是另一个Widget。因此,要显示MDCard,您必须通常使用add_widget() 方法将其添加到您的App,该方法已经在您的App 中。例如,而不是:

    on_release: Factory.MyMDCard().open()
    

    尝试:

    on_release: root.add_widget(Factory.MyMDCard())
    

    【讨论】:

    • 感谢您的回答。但另一个问题。如果我想一键关闭这个小部件,我应该输入什么命令?
    • 您可以通过保存对MyMDCard 的引用并调用remove_widget() 将其从显示中删除来做到这一点。但是您正在准确描述Popup 的用途。考虑使用包含您的MyMDCardPopup,然后您可以简单地使用open()dismiss()
    • 我把remove_widget()放在对应的函数里。我收到错误name 'remove_widget' is not defined。事实上,我在MDCard 中只有一个按钮,当按下它时,它会在其相应的函数中返回一个数字,另一个按钮用于关闭MDcard
    • 您必须使用与您使用的add_widget() 相同的容器的remove_widget() 方法。
    • 我有一个问题,我应该使用ids 代替remove_widget() 吗?
    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2015-10-07
    • 2016-11-29
    • 2019-11-19
    相关资源
    最近更新 更多