2016-07-18 5 views
0

私はあなたがいくつかのTextInputsを記入して、マークされたスペースにサインを残してアンドロイド上にアプリケーションを作成しようとしています。私はpngとしてウィンドウをエクスポートするために、しかし、私はこれを.apkとしてビルドしてから、それを私のタブレット上で走らせると、すべてがうまく見えます。そして、エクスポートボタンを押してもエラーは出ませんでしたが、誰かがコードが入っているディレクトリを見ると言っていましたが、私の場合はapp(.apk)でコードを追加しますが、問題はそれほどありません。変数と名前のいくつかは奇妙に思えるかもしれないが、英語は私の最初の言語ではありませんKivy - Android上でpngとしてエクスポートウィンドウ

__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() 

事前に助けを

おかげで私は、ファイルがある他、関連リンク言語名

+0

ディレクトリが存在するかどうかを確認し、存在しない場合は作成してください。絶対パスを使用します。 – EL3PHANTEN

+0

申し訳ありませんが、私はそこにあなたを逃しました、より簡単に説明する気がしますか? –

+0

特定のフォルダが存在するかどうかを確認できます。 "/ data/storage/0/something"と指定します。そうでなければ、あなたのアプリがそのディレクトリを作成するようにしてください。そして、常に絶対パスを使用します。 "/data/storage/0/something/b.png"。 – EL3PHANTEN

答えて

2

を選択する傾向があります現在のディレクトリに保存されています。スクリプトからos.path.realpath('.')このディレクトリには他のアプリケーションからアクセスできません。他のアプリケーションからファイルにアクセスする場合は、外部ストレージディレクトリのどこかに保存してください(Kivyの場合はApp.user_data_dirを使用できます)。

+0

と 'os.getcwd()'はあなたの現在の作業ディレクトリを返します – EL3PHANTEN

+0

ok、私はそれを試してみます –

+0

私はあなたが達成したいと思うものを参照してください、 ( –

関連する問題