Kivy - 在Android上将窗口导出为png

时间:2016-07-18 15:14:32

标签: android python-2.7 kivy buildozer

我正在尝试在Android上创建一个应用程序,你填写了几个TextInputs,然后在标记的空间上留下你的签名,我有2个按钮,一个用于清除,一个用于将窗口导出为png然而,当我把它作为一个.apk构建然后在我的平板电脑上运行时,一切看起来仍然很好,按下导出按钮不会出错,但是我找不到一张生活中的图像,有人说要查看代码所在的目录,但在我的情况下是一个应用程序(.apk),我将添加我的代码,即使我不认为它与该问题有很大关系。

感谢您的帮助

__version__ = "0.2"
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.graphics import Color, Ellipse, Line
from kivy.core.window import Window
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.gridlayout import GridLayout
from kivy.config import Config
from kivy.base import EventLoop


class MyPaintWidget(Widget):
    Window.clearcolor = (0.95, 0.95, 0.85, 1)

    def on_touch_down(self, touch):
        color = (0,0,0)
        with self.canvas:
            Color(*color, mode='hsv')
            d = 3
            Ellipse(pos=(touch.x - d / 2, (touch.y - d / 2)+50), size=(d, d))
            touch.ud['line'] = Line(points=(touch.x, touch.y+50),width=1.5)

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


class WaentjiesApp(App):
    display_width = 1200
    global parent
    def build(self):
        global parent
        Window.size = (self.display_width, 500)
        parent = FloatLayout()
        self.painter = MyPaintWidget()
        save_button = Button(text = 'Save',pos=(0,0),size_hint=(.20,.20),on_release=self.save_canvas)
        clear_button = Button(text = 'Clear',pos=(300,0),size_hint=(.20,.20),on_release=self.clear_canvas)
        name_text = TextInput(text='',pos=(0,370),size_hint=(.15,.15))
        van_text = TextInput(text='',pos=(200,370),size_hint=(.15,.15))
        adres_text = TextInput(text='',pos=(0,220),size_hint=(.15,.15))
        waentjie_text = TextInput(text='',pos=(200,220),size_hint=(.15,.15))
        name_label = Label(text='Naam',pos=(0,450),size_hint=(.15,.15),color=(0,0,0,1))
        van_label = Label(text='Van',pos=(200,450),size_hint=(.15,.15),color=(0,0,0,1))
        adres_label = Label(text='Adres',pos=(0,300),size_hint=(.15,.15),color=(0,0,0,1))
        waentjie_label = Label(text='Waentjie',pos=(200,300),size_hint=(.15,.15),color=(0,0,0,1))
        handtekening1_label = Label(text='Handtekening',pos=(400,350),size_hint=(.15,.15),color=(0,0,0,1))
        handtekening2_label = Label(text='......................................................................................................................................',pos=(600,190),size_hint=(.15,.15),color=(0,0,0,0.5))
        agtergrond = Label()
        parent.add_widget(handtekening2_label)
        parent.add_widget(self.painter)
        parent.add_widget(save_button)
        parent.add_widget(clear_button)
        parent.add_widget(name_text)
        parent.add_widget(van_text)
        parent.add_widget(adres_text)
        parent.add_widget(name_label)
        parent.add_widget(van_label)
        parent.add_widget(adres_label)
        parent.add_widget(waentjie_text)
        parent.add_widget(waentjie_label)
        parent.add_widget(handtekening1_label)
        return parent

    def save_canvas(self, obj):
        global parent
        parent.export_to_png('b.png')

    def clear_canvas(self, obj):
        self.painter.canvas.clear()


WaentjiesApp().run()

一些变量和名称可能看起来很奇怪,但英语不是我的第一语言所以我倾向于选择其他语言名称

1 个答案:

答案 0 :(得分:2)

该文件保存在当前目录中,您可以使用以下目录访问该目录。来自您脚本的os.path.realpath('.')。其他应用程序无法访问此目录。如果要从其他应用程序访问该文件,请将其保存在外部存储目录中的某个位置(使用Kivy,您可以使用App.user_data_dir)。