Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivy.app import App
- from kivy.uix.button import Button
- from kivy.uix.boxlayout import BoxLayout
- from kivy.core.image import Image
- from kivy.uix.gridlayout import GridLayout
- from kivy.graphics.fbo import Fbo
- from kivy.graphics.texture import Texture
- from functools import partial
- from kivy.uix.widget import Widget
- from kivy.graphics.opengl import glReadPixels,GL_RGBA, GL_UNSIGNED_BYTE
- from kivy.graphics import *
- class Guardar(Widget):
- def guardar_canvas2(self,widget):
- if widget.parent is not None:
- canvas_parent_index = widget.parent.canvas.indexof(widget.canvas)
- if canvas_parent_index > -1:
- widget.parent.canvas.remove(widget.canvas)
- fbo = Fbo(size=widget.size, with_stencilbuffer=True)
- with fbo:
- ClearColor(0, 0, 0, 1)
- ClearBuffers()
- Scale(1, -1, 1)
- Translate(-widget.x, -widget.y - widget.height, 0)
- fbo.add(widget.canvas)
- fbo.draw()
- fbo.texture.save("gidhup.png", flipped=False)
- fbo.remove(widget.canvas)
- if widget.parent is not None and canvas_parent_index > -1:
- widget.parent.canvas.insert(canvas_parent_index, widget.canvas)
- return True
- class TestApp(App):
- def guardar(self,ins,*args):
- Guardar().guardar_canvas2(ins)
- def build(self):
- self.bx=BoxLayout(orientation="vertical")
- self.bx2=BoxLayout()
- self.gl=GridLayout(cols=5,rows=5)
- for i in range(25):
- self.gl.add_widget(Button(text=str(i)))
- btn=Button(on_release=partial(self.guardar, self.bx2),text='Save canvas :)')
- self.bx2.add_widget(self.gl)
- self.bx.add_widget(self.bx2)
- self.bx.add_widget(btn)
- return self.bx
- TestApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement