Kivy-关键和属性问题

时间:2019-01-31 19:08:36

标签: python kivy

您可以说,我有很多东西要学。我似乎还没有赶上,所以这个问题与我刚刚发布的最后一个问题非常相似。我希望我的按钮单击以通知我它已经被单击,但是出现两个错误。 .gitignore Guardfile。我希望每当打开弹出框并按下KeyError: 'calendar_butt'按钮时都引用CalendarButt函数

主.py文件

AttributeError: 'super' object has no attribute '__getattr__'

主KV文件

set_event

January.kv

    from kivy.config import Config
    Config.set('graphics', 'resizable', False)
    Config.set('graphics', 'width', '800')
    Config.set('graphics', 'height', '600')

    from datetime import datetime, date, time, timedelta
    from kivy.app import App
    from kivy.clock import Clock
    from kivy.uix.screenmanager import Screen, ScreenManager, NoTransition

    from kivy.uix.button import ButtonBehavior, Button
    from kivy.uix.popup import Popup



    class CalendarButt(Button):

        def button_clicked(self):
            if self.ids.calendar_butt.state == 'down':
                print('Hello')

    class ScheduledPopup(Popup):
        pass

    class ButtonPopup(Popup):

        def schedule_event(self, *args):
            if self.ids.set_event.state == 'down':
                CalendarButt(text=self.ids.scheduled_event.text)
                print(self.ids.scheduled_event.text)

    class CalendarLayout(Screen):
        pass


    class January(Screen):
        pass


    class ManageScreens(ScreenManager):
        pass


    class Calendar(App):

        def build(self):
            return ManageScreens()

    if __name__ == '__main__':
        Calendar().run()

1 个答案:

答案 0 :(得分:0)

在您的prompt()方法中,您引用的是button_clicked()

self.ids.calendar_butt

与此有关的两个问题。

首先,您尚未在class CalendarButt(Button): def button_clicked(self): if self.ids.calendar_butt.state == 'down': print('Hello') 中定义任何ids。有关CalendarButt的详细信息,请参见documentation。由于没有ids,因此ids会引发您看到的错误。如果您向上滚动显示的错误消息,则应该在错误开始处附近看到一个self.ids.calendar_butt

第二,由于KeyError: 'calendar_butt'button_clicked()中的方法,因此CalendarButt的实例就是CalendarButt,因此您的代码应为:

self

通过上述更改,您的代码似乎可以正常工作。