私は楽しいことをしてkivyを学ぼうとしていますが、kivyのやり方を理解するのは難しいです。サムネイルギャラリーでクリック可能なkivyイメージを作成する方法
私はforループでサムネイルギャラリーを作成し、個々のイメージをコールバックにバインドしました。クリックしたイメージの情報(パス)をコールバックに渡してイメージを開きます。しかし、私はkivyでこのような簡単なことをする方法を理解しているように思えるので、私はいくつかの助けが必要です。
ボタンウィジェットの使用。私はボタンを使ってギャラリーを作って、その背景を画像に変更しようとしましたが、画像は伸びてゆがんでしまいました。
画像ウィジェットでサムネイルギャラリーを作ったところ、親指で見つかったばかりの画像しか表示されませんでしたが、クリックしたサム情報を各サム(コールバックイベント)のコールバックに渡す方法が見つかりませんだと思う。
私はon_touch_downプロパティで各親指を結合するが、コールバックが実行されたときに情報をワンクリック魔女にコールバックに渡されるすべての親指は、私が欲しいものではありません、私がクリックされた個々の親指の唯一の情報が欲しいですコールバックに渡されます。私はkivy docsを読んだが、ますます混乱する。ここには私の裸の骨のコードです、どんな助けもありがとうありがとうございます。
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()
偉大な応答を。 私はこのことを私に理解させてくれた(SP SP)のおかげです。どうもありがとうございます(SP SP)。 これをより明確にするためです。 "class MyImage(Image)"クラスはkivy Image()クラスになります。なぜなら、この新しく作成されたクラスにsource = 'img.jpg'を渡す理由が理解できます。 新しいカスタムクラス "self.collide_point(* touch.pos):"内の部分がフィルタになります。クリックされた画像(ウィジェット)のみをフィルタリングする部分です。 SP SP)は、すべての画像(ウィジェット)ソースが印刷されると述べた。すばらしいです –