简体   繁体   English

如何在 kivy 中使用没有.kv 文件的屏幕管理器的按钮行为

[英]How to use button behavior with screenmanager without .kv file in kivy

I need help on how to use kivy 'button behavior' with screen manager without any.kv file.我需要有关如何在没有任何.kv 文件的情况下将 kivy 的“按钮行为”与屏幕管理器一起使用的帮助。 I have tried but am getting errors.我已经尝试过,但出现错误。

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.button import Buttonbehavior 
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition


class ScreenManagement(ScreenManager):
    def __init__(self, **kwargs):
        super(ScreenManagement, self).__init__(**kwargs)

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

class Screen1(Screen, ButtonBehavior,Image):
    def __init__(self, **kwargs):
        super(Screen1,self).__init__(**kwargs)
        self.welc = Label(text='hi there welcome to my first screen', font_size=15, size_hint=(.26, .26),
                          pos_hint={'center_x': .5, 'center_y': .7})
        self.add_widget(self.welc)

#This is where I want the image to have buttonbehaviour and be clickable
        self.goto= ImageButton(source='put_any.png', size_hint=(.3, .2),
                       pos_hint={'center_x': .5, 'center_y': .32}, on_press=(source='put_any.png'), on_release=(source='put_any.png'))
        self.add_widget(self.goto)


class Application(App):
    def build(self):
        sm = ScreenManagement(transition=FadeTransition())
        sm.add_widget(Screen1(name='screen1'))
        sm.add_widget(Screen2(name='screen2'))
        return sm


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

I know I can do this with button widget but I want to use image and make it use button behavior.我知道我可以使用按钮小部件来做到这一点,但我想使用图像并使其使用按钮行为。 Making the image clickable.使图像可点击。

Make a class ImageButton制作一个 class ImageButton

from kivy.uix.behaviors import ButtonBehavior  
from kivy.uix.image import Image  

class ImageButton(ButtonBehavior, Image):
    pass

Now you can use ImageButton(source="some/path", on_press=some_function()) in any Layout or App现在您可以在任何布局或应用程序中使用ImageButton(source="some/path", on_press=some_function())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM