Kivy-- 图像作为按钮
Kivy-- Image as Button
我只是 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()
我的问题是,为什么即使我按下屏幕的其他部分(不是图像),应用程序仍将整个屏幕视为一个按钮?
原谅我的无知,我真的很想学习。谢谢!
class ImageButton(ButtonBehavior,FloatLayout, Image):
不要继承多个小部件(在本例中为 FloatLayout 和 Image),这会导致一些奇怪的错误。
至于您的具体问题,ButtonBehavior 是 ImageButton 的父级 class,ImageButton 是根小部件并填充屏幕。出于这个原因,整个屏幕 是 一个按钮,尽管您显然有其他意图。
下面是不是更像你想要的?您也可以只使用 FloatLayout 而不是创建新的 RootWidget class,我这样做只是为了适应您已经编写的内容。
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 和面向对象编程的初学者。
我一直在结合这里的教程练习这段代码:
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()
我的问题是,为什么即使我按下屏幕的其他部分(不是图像),应用程序仍将整个屏幕视为一个按钮?
原谅我的无知,我真的很想学习。谢谢!
class ImageButton(ButtonBehavior,FloatLayout, Image):
不要继承多个小部件(在本例中为 FloatLayout 和 Image),这会导致一些奇怪的错误。
至于您的具体问题,ButtonBehavior 是 ImageButton 的父级 class,ImageButton 是根小部件并填充屏幕。出于这个原因,整个屏幕 是 一个按钮,尽管您显然有其他意图。
下面是不是更像你想要的?您也可以只使用 FloatLayout 而不是创建新的 RootWidget class,我这样做只是为了适应您已经编写的内容。
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()