簡體   English   中英

如何在縮略圖庫中制作可點擊的獼猴桃圖像

[英]How to make a clickable kivy image in a thumbnail gallery

我正在嘗試通過做有趣的事情來學習獼猴桃,但是有點難以掌握獼猴桃的做事方式。

在Tkinter中,我創建了帶有forloop的縮略圖庫,並將每個單獨的圖像綁定到回調,它只是將單擊圖像的信息(路徑)傳遞給回調以打開圖像。 但是我似乎可以理解如何在獼猴桃中做這種簡單的事情,所以我需要一些幫助。

使用Button小部件有效; 我嘗試創建帶有按鈕的畫廊並將其背景更改為圖像,但是圖像會被拉伸和扭曲(不是我想要的)。

因此,我使用“圖像”小部件制作了縮略圖庫,並且顯示的拇指剛剛找到,但是我找不到一種方法來將單擊的拇指信息傳遞給每個拇指的回調(回調事件)以應有的方式工作。

我將每個拇指與on_touch_down屬性綁定,但是當執行回調時,所有拇指信息都通過單擊傳遞給回調,這不是我想要的,我只希望將單擊的單個拇指的信息傳遞給打回來。 我閱讀了kivy文檔,但越來越困惑了。 無論如何,這是我的基本代碼,非常感謝您的幫助。

from kivy.app import App 
from kivy.uix.gridlayout import GridLayout
from kivy.uix.image import Image 

import glob


class Image_Gallery(GridLayout):


    def __init__(self):
        super(Image_Gallery, self).__init__()
        images = glob.glob('C:\Users\Public\Pictures\Sample Pictures\*.jpg')  # windows 7 sample pictures dir looks great
        self.cols=3
        for img in images:
            thumb = Image(source=img)
            thumb.bind(on_touch_down=self.callback)    # I tried on_touch property but does not work with images only buttons
            self.add_widget(thumb)

    def callback(self, obj, touch):
        # This should print only the clicked image source. 
        # (but instead is printing all images sources at once)
        print obj.source                



class mainApp(App):


    def build(self):
        return Image_Gallery()


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

on_touch事件會在您應用中的所有小部件上分配該事件,您必須定義自己的Image類並重新定義on_touch方法:

...
class MyImage(Image):
    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            print self.source

class Image_Gallery(GridLayout):

    def __init__(self, **kwargs):
        super(Image_Gallery, self).__init__(**kwargs)
        images = glob.glob('C:\Users\Public\Pictures\Sample Pictures\*.jpg')
        self.cols = 3
        for img in images:
            thumb = MyImage(source=img)
            self.add_widget(thumb)
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM