gpt4 book ai didi

python - 更改小部件中的图像 - Kivy - Python

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:31 25 4
gpt4 key购买 nike

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.graphics import Color, Rectangle
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image

class Imglayout(FloatLayout):

def __init__(self,**args):
super(Imglayout,self).__init__(**args)

with self.canvas.before:
Color(0,0,0,0)
self.rect=Rectangle(size=self.size,pos=self.pos)

self.bind(size=self.updates,pos=self.updates)
def updates(self,instance,value):
self.rect.size=instance.size
self.rect.pos=instance.pos


class MainTApp(App):

im=Image(source='img1.jpg')
def build(self):
root = BoxLayout(orientation='vertical')
c = Imglayout()
root.add_widget(c)


self.im.keep_ratio= False
self.im.allow_stretch = True
cat=Button(text="Categories",size_hint=(1,.07))
cat.bind(on_press=self.callback)
c.add_widget(self.im)
root.add_widget(cat);
return root

def callback(self,value):
self.im=Image(source='img2.jpg')


if __name__ == '__main__':
MainTApp().run()

我在这里尝试做的是更改对象创建期间首先加载的图像,该图像在应用程序启动时显示,然后在按下按钮 cat 时更改它。我正在尝试这样做,但没有发生。我最终希望它通过滑动手势来改变。(有一点滑动动画,就像在手机中发生的那样

我正在尝试构建的是幻灯片放映,它会在 t 秒内更改图像,除非滑动,然后当新图像出现时,计时器会重置。当按下类别按钮时,图像将不存在,也没有可供选择的类别列表。当触摸列表中的项目时,该列表中的图像将显示在屏幕上。

最后,当一切都完成后,我想让它自动检测类别(基于指定位置的目录。)然后所有图像都可供它使用。(这不是告诉它明确有多少图像和什么图像。)

但是,我不能做第一件事,所以我真的很想得到一些帮助。也许还有一些关于如何实现其他目标的建议。

最佳答案

def callback(self,value):
self.im=Image(source='img2.jpg')

您的问题出在回调的定义中。您使用新源创建了一个图像,但您没有对它做任何事情,比如将它添加到您的小部件树。

你真正想做的是修改现有图片的来源:

def callback(self, instance, value):
self.im.source = 'img2.jpg'

这将立即替换现有图像的源,该图像将立即在您的图形用户界面中更新。请注意,我还添加了一个实例参数,该参数将传递给回调,因此您需要捕获它,否则您会因参数数量错误而崩溃。

此外,我会在构建中定义您的图像,而不是将其定义为类级别变量。我不确定当前的方式是否真的会给您带来问题,但在某些情况下可能会。

关于python - 更改小部件中的图像 - Kivy - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21471512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com