2017-02-25 4 views
0

私は小さなアプリを持っており、BoxLayout全体のスクリーンショットを作成し、親レイアウトの他の部分を省略したいと思います。ただKivy screenshot aレイアウトまたはID

BoxLayout: 
     id: image_area 
     size_hint_y: 600 
     Image: 
      source: root.image_source 
      size: self.size 
      DragText: 
       background_color: (0, 0, 0, 0) 
       foreground_color: (255,255,255,255) 
       multiline: True 
       height: self.minimum_height 
       width: '400dp' 
       center: self.parent.center 
       text: 'Before' 
       font_size: '60px' 
     Image: 
      source: root.image_source2 
      DragText: 
       background_color: (0, 0, 0, 0) 
       foreground_color: (255,255,255,255) 
       multiline: True 
       height: self.minimum_height 
       width: '400dp' 
       center: self.parent.center 
       text: 'After' 
       font_size: '60px' 

私はこの1つ上の他のレイアウトを持っているとさえ親がボックスのレイアウトですが、私:

注:これはアンドロイドアプリ

のために基本的に私はこのような何かを持っていますこのレイアウトをスクリーンショットしたいと私はこれに問題があります。

は、私が試した:

def screenshot(self, widget): 
    widget.export_to_png('{0}.png'.format(datetime.now())) 

しかし、それは動作しません、任意のアイデアを私はこれを行うことができますか?

が、私はこれを指定するのを忘れて、スクリーンショットを活性化させるボタンは、これを行うには2つの方法があり、この

 Button: 
      size_hint_x: 2 
      text: 'Save' 
      on_release: root.screenshot(image_area) 

答えて

1

のように見えます。直接kvlangから、またはあなたが試したように、Pythonのメソッドで。
両方の例を示します。 kvlangから直接

方法で
from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder 


Builder.load_string(''' 


<MyLayout>: 
    orientation: "vertical" 
    Label: 
     text: "Label1 in outer box" 

    BoxLayout: 
     id: myexport 
     Label: 
      text: "Label in inner layout" 

    Label: 
     text: "Label2 in outer box" 
    Button: 
     text: "Button in outer, to export" 
     on_release: myexport.export_to_png("test.png") 


''') 

class MyLayout(BoxLayout): 
    pass 


class MyApp(App): 
    def build(self): 
     return MyLayout() 


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

:あなたはウェルカムです@Nick

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder 


Builder.load_string(''' 


<MyLayout>: 
    orientation: "vertical" 
    Label: 
     text: "Label1 in outer box" 

    BoxLayout: 
     id: myexport 
     Label: 
      text: "Label in inner layout" 

    Label: 
     text: "Label2 in outer box" 
    Button: 
     text: "Button in outer, to export" 
     on_release: root.export() 


''') 

class MyLayout(BoxLayout): 

    def export(self,*args): 
     self.ids.myexport.export_to_png("test2.png") 


class MyApp(App): 
    def build(self): 
     return MyLayout() 


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

おかげで、これは – Nick

+0

を助けました – EL3PHANTEN

関連する問題