【问题标题】:Kivy-- Image as ButtonKivy——图像作为按钮
【发布时间】:2016-02-03 00:23:57
【问题描述】:

我只是 kivy 和面向对象编程的初学者。

我一直在结合这里的教程练习这段代码:

from kivy.uix.behaviors import ButtonBehavior  
from kivy.uix.image import Image  
from kivy.lang import Builder  
from kivy.app import App  
from kivy.uix.floatlayout import FloatLayout  

Builder.load_string("""  
<ImageButton>:  
    FloatLayout:  
        Image:  
            source:'resizedA.png'  
            size_hint: .2, .2  
""")  

class ImageButton(ButtonBehavior,FloatLayout, Image):  
    def on_press(self):  
        print ('pressed')


class The_AssignmentApp(App):  
    def build(self):  
        return ImageButton()  

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

我的问题是,为什么即使我按下屏幕的其他部分(不是图像),应用程序仍然将整个屏幕视为一个按钮?

请原谅我的无知,我真的很想学习。谢谢!

【问题讨论】:

    标签: kivy


    【解决方案1】:
    class ImageButton(ButtonBehavior,FloatLayout, Image):  
    

    不要从多个小部件(在本例中为 FloatLayout 和 Image)继承,这会导致一些奇怪的错误。

    至于您的具体问题, ButtonBehavior 是 ImageButton 的父类,它是根小部件并填充屏幕。出于这个原因,整个屏幕一个按钮,尽管您显然不打算这样做。

    以下是否更符合您的要求?您也可以只使用 FloatLayout 而不是创建新的 RootWidget 类,我这样做是为了适应您已经编写的内容。

    from kivy.uix.behaviors import ButtonBehavior  
    from kivy.uix.image import Image  
    from kivy.lang import Builder  
    from kivy.app import App  
    from kivy.uix.floatlayout import FloatLayout  
    
    class RootWidget(FloatLayout):
        pass
    
    class ImageButton(ButtonBehavior, Image):  
        def on_press(self):  
            print ('pressed')
    
    Builder.load_string("""  
    <RootWidget>:  
        ImageButton:  
            source:'resizedA.png'  
            size_hint: .2, .2  
    """)  
    
    class The_AssignmentApp(App):  
        def build(self):  
            return RootWidget()
    
    if __name__ == "__main__":  
        The_AssignmentApp().run()  
    

    【讨论】:

    • 我不明白如何使用它来触发任意函数,但文档的这一页 (kivy.org/doc/stable/api-kivy.uix.behaviors.html) 确实说明了这一点。您只需添加一个类ImageButton(ButtonBehavior, Image): pass。然后你可以使用ImageButton(source="PATH/TO/IMAGE", on_press=some_function()) 让图片充当一个Button。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2016-05-13
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多