Kivy——图像作为按钮
我只是kivy和面向对象编程的初学者 我一直在结合以下教程练习此代码:Kivy——图像作为按钮,kivy,Kivy,我只是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("""
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.uix.behaviors导入按钮行为
从kivy.uix.image导入图像
从kivy.lang导入生成器
从kivy.app导入应用程序
从kivy.uix.floatlayout导入floatlayout
生成器。加载\u字符串(“”)
:
浮动布局:
图片:
来源:'resizedA.png'
大小提示:.2、.2
""")
类ImageButton(按钮行为、浮动布局、图像):
def on_按下(自):
打印('按下')
为分配应用程序(应用程序)分类:
def生成(自):
返回图像按钮()
如果名称=“\uuuuu main\uuuuuuuu”:
_AssignmentApp().run()
我的问题是,为什么即使我按下屏幕的其他部分(而不是图像),应用程序仍然将整个屏幕视为一个按钮
请原谅我的无知,我真的很想学习。谢谢
class ImageButton(ButtonBehavior,FloatLayout, Image):
不要继承多个小部件(在本例中是FloatLayout和Image),这将导致一些奇怪的bug
至于您的具体问题,ButtonBehavior是ImageButton的父类,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.uix.behaviors导入按钮行为
从kivy.uix.image导入图像
从kivy.lang导入生成器
从kivy.app导入应用程序
从kivy.uix.floatlayout导入floatlayout
类RootWidget(FloatLayout):
通过
类ImageButton(按钮行为,图像):
def on_按下(自):
打印('按下')
生成器。加载\u字符串(“”)
:
图像按钮:
来源:'resizedA.png'
大小提示:.2、.2
""")
为分配应用程序(应用程序)分类:
def生成(自):
返回RootWidget()
如果名称=“\uuuuu main\uuuuuuuu”:
_AssignmentApp().run()
我不明白如何使用它来启动任意函数,但文档()的这一页确实说明了这一点。您只需添加一个类ImageButton(ButtonBehavior,Image):pass
。然后,您可以使用ImageButton(source=“PATH/TO/IMAGE”,on\u press=some\u function())
让图像充当按钮。