2013-10-19 108 views
0

我在kivy手風琴上加載圖像,我想在按下鼠標按鍵時打印圖像下方的x和y座標。我不能爲我的數字生活這一點。每次添加任何東西時,它都會關閉整個程序。我知道我擁有的小部件將打印到控制檯,但我想將其打印到屏幕上。謝謝您的幫助。Kivy手風琴互動

這裏是我使用的代碼:

from kivy.uix.accordion import Accordion, AccordionItem 
from kivy.uix.image import Image 
from kivy.app import App 
from kivy.uix.widget import Widget 

class MouseWidget(Widget): 
    def on_touch_down(self, touch): 
     print(touch) 


class MyApp(App): 
    def build(self): 
    root = Accordion(orientation='horizontal') 

    item= AccordionItem(title='Picture1') 
    src = "picture1.png" 
    image = Image(source=src,pos=(200, 100)) 
    # add image to AccordionItem 
    item.add_widget(image) 
    root.add_widget(item) 


    item= AccordionItem(title='Picture2') 
    src = "picture2.png" 
    image = Image(source=src,pos=(200, 100)) 
    # add image to AccordionItem 
    item.add_widget(image) 
    root.add_widget(item) 

    return root 

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

回答

1

這裏有一個簡單的修改程序,增加了觸摸位置的圖像下方的標籤,使用kivy語言來自動綁定到必要的屬性,以便顯示屏在更改時更新。

我不確定你有什麼特別的問題,所以讓我知道它的工作方式不清楚!

from kivy.uix.accordion import Accordion, AccordionItem 
from kivy.uix.image import Image 
from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.lang import Builder 
from kivy.properties import ObjectProperty, StringProperty 
from kivy.uix.boxlayout import BoxLayout 

Builder.load_string(''' 
<MouseWidget>: 
    image: image 
    label: label 
    orientation: 'vertical' 
    Image: 
     id: image 
     source: root.source 
    Label: 
     id: label 
     size_hint_y: None 
     height: 50 
     text: 'no touch detected' 

''') 

class MouseWidget(BoxLayout): 
    image = ObjectProperty() 
    label = ObjectProperty() 
    source = StringProperty() 

    def on_touch_down(self, touch): 
     if self.image.collide_point(*touch.pos): 
      self.label.text = str(touch.pos) 

    def on_touch_up(self, touch): 
     self.label.text = 'no touch detected' 


class MyApp(App): 
    def build(self): 
     root = Accordion(orientation='horizontal') 

     item= AccordionItem(title='Picture1') 
     src = "picture1.png" 
     image = MouseWidget(source=src) 
     # add image to AccordionItem 
     item.add_widget(image) 
     root.add_widget(item) 


     item= AccordionItem(title='Picture2') 
     src = "picture2.png" 
     image = MouseWidget(source=src) 
     # add image to AccordionItem 
     item.add_widget(image) 
     root.add_widget(item) 

     return root 

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

我每次添加任何東西,好像它關閉整個程序下來。

這聽起來像您的更改使程序崩潰。您應該通過在終端中運行來檢查程序的輸出。它將打印有關錯誤的信息,以幫助您追蹤錯誤。

+0

Inclement,你是一個傳奇。非常感謝。從現在開始我肯定會在終端上運行kivy。只是看到這段代碼教會了我,而不僅僅是花了兩天的時間試圖找出這些東西。 –