【问题标题】:Kivy--Export Window as png on AndroidKivy--在Android上将窗口导出为png
【发布时间】:2016-07-18 15:14:32
【问题描述】:

我正在尝试在 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()

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

【问题讨论】:

  • 尝试检查目录是否存在,如果不存在,则创建它。使用绝对路径。
  • 对不起,我想你了,介意再简单解释一下吗?
  • 您可以检查特定文件夹是否存在。 “/data/storage/0/something”例如。如果没有,请让您的应用程序创建该目录。并且总是使用绝对路径。 “/data/storage/0/something/b.png”。
  • 好的,我明白了,谢谢我会试试的

标签: android python-2.7 kivy buildozer


【解决方案1】:

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

【讨论】:

  • os.getcwd() 将返回您当前的工作目录
  • 我知道你想要完成什么,但它没有工作,抱歉 :-(
  • 所以,你的意思是要将图像保存在另一个目录中,我应该使用 App.user_data_dir?,究竟要怎么做呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多