Я не могу проверить ваш код для iOS прямо сейчас (я постараюсь сделать это чуть позже.), Но в Linux (Ubuntu) он работает нормально: пользователь может сделать снимок экрана всей области приложения, изображение сохраняется в формате png в исходной папке (к сожалению, я не совсем ладил с вашими путями вывода, поэтому я заменил значение имени на name = 'test.png'
).
Затем я написал минимальный пример, который также работает в моей системе:
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
KV = '''
Button:
text: 'Save'
on_press: app.btn_save()
'''
class ApplePenApp(App):
def build(self):
self.root = Builder.load_string(KV)
def btn_save(self):
Window.screenshot('test.png')
ApplePenApp().run()
Пожалуйста, проверьте, работает ли он в вашей системе (если он работает, то, скорее всего, проблема где-то в вашем коде).
Я обнаружил проблему с черным скриншотом, только когда делал что-то вроде этого:
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
KV = """
Button
text: '123456'
"""
class MyApp(App):
def build(self):
self.root = Builder.load_string(KV)
self.make_screenshot()
def make_screenshot(self):
Window.screenshot('test.png')
MyApp().run()
Однако я также видел проблемы с Window.screenshot
у некоторых пользователей, например:
https://github.com/kivy/kivy/issues/4514
Кстати, в качестве более продвинутой альтернативы Window.screenshot
, вы можете попробовать export_to_png
. Вы можете использовать этот метод для любого виджета, вот краткий пример:
from kivy.app import App
from kivy.lang import Builder
KV = '''
Button:
text: 'Save'
on_press: app.btn_save(self)
'''
class ApplePenApp(App):
def build(self):
self.root = Builder.load_string(KV)
def btn_save(self, inst):
inst.export_to_png('test.png')
ApplePenApp().run()
Вы не можете использовать его для окна, но вы можете использовать его для экрана (в вашем случае это может быть «рисование» SecondScreen):
from kivy.app import App
from kivy.lang import Builder
KV = '''
ScreenManager
Screen
id: screen
Button:
text: 'Save'
on_press: app.widget_save(screen)
'''
class ApplePenApp(App):
def build(self):
self.root = Builder.load_string(KV)
def widget_save(self, inst):
inst.export_to_png('test.png')
ApplePenApp().run()
пожалуйста, проверьте, работают ли эти примеры для вас.