Проблема со снимком экрана в приложении Kivy / python на Raspberry Pi - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь сделать скриншот линий, нарисованных в моем приложении для рисования Kivy.Я попробовал следующие три способа, но ни один не сработал.

self.export_to_png('image_1.png')
ImageGrab.grab_to_file('image_2.png')
self.screenshot('image_3.png')  

Export_to_png создает следующее изображение:

enter image description here

ImageGrab производитэкран печати того, что находится под приложением kivy:

enter image description here

Я не мог понять синтаксис для выполнения функции снимка экрана, поэтому он просто производитошибка:

AttributeError: 'Screenshot' object has no attribute 'screenshot'

Файл Python:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Line
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import Screen , ScreenManager

import pyscreenshot as ImageGrab

class Home(Screen):
    pass

class DrawInput(Widget):

    def on_touch_down(self, touch):
        with self.canvas:
            touch.ud["line"] = Line(points=(touch.x, touch.y))           

    def on_touch_move(self, touch):
        touch.ud["line"].points += (touch.x, touch.y)

    def clear_canvas(self):
        self.canvas.clear()

class Screenshot(Widget):   

    def take(self):
        self.export_to_png('image_1.png')
        ImageGrab.grab_to_file('image_2.png')
        self.screenshot('image_3.png')  

class SimpleKivy(App):
    def build(self):
        return

if __name__ == "__main__":
    SimpleKivy().run()

Файл Kivy:

<Button>:
    font_size: 40
    color: 1,1,1,1

ScreenManager:

    Home:

        name: 'home'
        DrawInput:
            id: widget_clear

        Screenshot:
            id: widget_screenshot

        FloatLayout:

            Button:
                text: "Clear"
                pos_hint: {"x": 0, 'top': 0.6666}
                size_hint: 0.2, 0.3333
                on_release: 
                    widget_clear.clear_canvas()

            Button:
                text: "Save"
                pos_hint: {"x": 0.8, 'top': 0.6666}
                size_hint: 0.2, 0.3333
                on_release:
                    widget_screenshot.take()
                    widget_clear.clear_canvas() 

Я использую Raspbian 9.4, Python 2.7.13 и Kivy 1.10.1.

...