首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有ScreenManager文件的Kivy .kv

没有ScreenManager文件的Kivy .kv
EN

Stack Overflow用户
提问于 2022-06-02 15:59:35
回答 1查看 43关注 0票数 0

我试图在没有.kv文件的情况下进行屏幕转换。在没有.kv的情况下可以这样做吗?这是代码

代码语言:javascript
复制
class ScreenManagement(ScreenManager):
    def __init__(self, **kwargs):
        super(ScreenManagement, self).__init__(**kwargs)


class testW(Screen):
    def __init__(self, **kwargs):
        super(testW, self).__init__()

class emotionRecog(Screen):
    def __init__(self, **kwargs):
        super(emotionRecog, self).__init__(**kwargs)
        self.button1 = Button(text="Next", size_hint=(1, .1))
        self.button1.bind(on_press=self.screenTransition())
        layout = BoxLayout(orientation="vertical")
        layout.add_widget(self.button1)
        return layout

    def screenTransition(self, *args):
        self.manager.current = 'test'


class CamApp(App):
    def build(self):
        sm = ScreenManagement(transition=FadeTransition())
        sm.add_widget(emotionRecog(name='emotion'))
        sm.add_widget(testW(name='test'))
        return sm


if __name__ == "__main__":
    CamApp().run()

运行它后,我得到以下错误

代码语言:javascript
复制
     Traceback (most recent call last):
   File "C:\Study\KivyMultiScreen\main.py", line 53, in <module>
     CamApp().run()
   File "C:\Study\KivyMultiScreen\main.py", line 47, in build
     sm.add_widget(emotionRecog(name='emotion'))
   File "C:\Study\KivyMultiScreen\main.py", line 35, in __init__
     self.button1.bind(on_press=self.screenTransition())
   File "C:\Study\KivyMultiScreen\main.py", line 41, in screenTransition
     self.manager.current = 'test'
 AttributeError: 'NoneType' object has no attribute 'current'

Process finished with exit code 1

你能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 16:10:36

您应该将回调本身绑定到on_press操作。这样,Kivy可以稍后调用该函数。

变化

代码语言:javascript
复制
        self.button1.bind(on_press=self.screenTransition())

代码语言:javascript
复制
        self.button1.bind(on_press=self.screenTransition)

您的脚本之所以会出现这个特定的错误,是因为Screen.manager还没有设置到您在该行中调用的self.screenTransition

您还可以查看Kivy文档中的前几个示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72479076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档