2017-10-10 7 views
1

kivynumpyモジュールを使用してpython 2.7で書かれたアプリです。私はこのリンクのステップを踏んでbuildozerをインストールしました:https://github.com/kivy/buildozer、私はsudo pip install https://github.com/kivy/buildozer/archive/master.zipをしませんでした。すべてのイベント/応答を受信して​​いないようだImageウィジェットが表示されていない、とボタンのtouchアプリケーションはPython2とPython3のWindowsでもうまく動作しますが、エラー:アンドロイドのインポートに失敗し、ボタンが応答しません

10-10 17:44:49.497 19176 19207 I python : [ERROR ] [Image  ] Error reading file .\logo_example1.png 
10-10 17:44:49.498 19176 19207 I python : [WARNING] [Base  ] Unknown <android> provider 
10-10 17:44:49.498 19176 19207 I python : [INFO ] [Base  ] Start application main loop 
10-10 17:44:49.503 19176 19207 I python : [INFO ] [GL   ] NPOT texture support is available 
10-10 17:44:49.504 19176 19207 I python : 0 
10-10 17:44:49.504 19176 19207 I python : coloring 
10-10 17:44:49.505 19176 19207 I python : [ERROR ] [Base  ] Failed to import "android" module. Could not remove android presplash. 

問題:アンドロイドbuildozer android deploy run logcatでアプリをデプロイした後、私は、ログにいくつかのエラーを見ました。これについてフィードバックをいただければ幸いです。

現在、部分的に解決:Imageウィジェットを今のショー、私は.\\logo_example1.pngからlogo_example1.pngに送信元アドレスを変更します。

既存の問題:Buttonウィジェットはアンドロイドではまだ反応しませんが、Windowsではうまく動作します。

これはmain.kvです::

#: import Main main  
<[email protected]>: 
    font_size:30 
    size:100, 50 
<[email protected]>: 
    font_size:30 
    size:100, 50 
    text: "Back" 
    pos: Main.Wsize[0]+100, Main.Wsize[1]+100 
<mainWidget>: 
    id: main_widget 
<homeWidget>: 
    id: home_widget 
    padding : 200 
    Image: 
     id:logo 
     source: 'logo_example1.png' 
     center: 300, 450 
    CtmButton: 
     id: start_button 
     text: "Start" 
     center:300, 200 
     on_release: home_widget.startbutton_function() 
    ## I also have tried replacing this with on_touch_down 
    ## to see whether it will solve the problem 
<puzzleWidget>: 
    id: puzzle_widget 
    BackButton: 
     id: back_button_1 
     center: 100, 37.5 
     on_release: puzzle_widget.backbutton_function() 

これはmain.py次のとおりです。スタートと戻るボタンをテストするための

コード

import kivy 
from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.uix.label import Label 
from kivy.core.window import Window 
from kivy.uix.image import Image 
from kivy.core.image import ImageData 
from kivy.clock import Clock 
from kivy.graphics import Rectangle 
import time 
import math 
import itertools 
import numpy 
Window.clearcolor = (0.2, 0.25, 0.2, 0.5); col_dx = 0.005; y = list(Window.clearcolor); xstart = 0; 
Window.size = (600, 700); Wsize = Window.size; 
class mainWidget(Widget): 
    def __init__(self): 
     Widget.__init__(self); 
     home = homeWidget(); self.add_widget(home); 
class homeWidget(Widget): 
    def __init__(self): 
     Widget.__init__(self); 
     self.bg_animate(); 
    def printingsomething(self, dt): 
     print(dt); 
    def bg_animate(self): 
     global bg_anim 
     self.bg_anim = Clock.schedule_interval(self.printingsomething,1/40); 
     self.bg_anim(); 
    def startbutton_function(self): 
     print('start pressed'); 
     self.bg_anim.cancel(); 
     mainw.clear_widgets(); 
     mainw.add_widget(puzzleWidget()); 
class puzzleWidget(Widget): 
    def __init__(self): 
     Widget.__init__(self); 
     self.Bar1 = Image(size = [600, 75], color = list(Window.clearcolor)); self.Bar1.color[-1] = 0.8; self.Bar1.pos = [0, 700 - self.Bar1.size[1]]; 
     self.Bar2 = Image(size = [600, 75], color = list(Window.clearcolor)); self.Bar2.color[-1] = 0.8; self.Bar2.pos = [0, 0]; 
     #### ADD WIDGET(S): 
     self.add_widget(self.Bar1); self.add_widget(self.Bar2); 
     self.remove_widget(self.ids.back_button_1); self.add_widget(self.ids.back_button_1); 
    def backbutton_function(self): 
     print('back pressed'); 
     self.clear_widgets(); 
     mainw.clear_widgets(); 
     mainw.add_widget(homeWidget()); 
################## main window for the app ######################### 
class mainApp(App):  
    def build(self): 
     global mainw 
     mainw = mainWidget(); 
     return mainw 
#################################################################### 
mainApp = mainApp() 
mainApp.run(); 
+0

buildozer.specで要件に 'android'を追加する必要があるかもしれません。 – Tshirtman

+0

@Tshirtman私はなぜ.. ..尋ねるかもしれない?私は公式の手順は十分にコンパクトだと思った。 – Arief

+0

@ Tshirtman私はそれを試して、ボタンはまだ応答を受信して​​いません。 – Arief

答えて

1

は "アンドロイド" のインポートに失敗しましたモジュール。

このメッセージは画像とは関係ありません。 androidモジュールを明示的に使用しないと、プロジェクトには影響しません。この行をログに記録しないようにするには、buildozer.specの中に要求にandroidを追加するだけです。ファイルを読み込む

エラー。\ logo_example1.png

このエラーはイメージが見つからないことを示します。 .\\logo_example1.pngで何が問題なのか分かりませんが、絶対パスを使用して問題を忘れた方が良いです。

import os 

root_dir = os.path.dirname(os.path.abspath(__file__)) 
img_rel = 'logo_example1.png' 
img_abs = os.path.join(root_dir, img_rel) 

print(img_abs) 

UPD:この行に関連して押すと

問題 - Window.size = (600, 700)。それを取り除くとすべてが機能します。

Window.sizeのように見えると、kivyタッチポイントの検出が途切れてしまいます。 Windowsでウィンドウのサイズを変更する場合は、useを設定するか、Window.sizeplatform checkに変更してください。

+0

ありがとう、私は投稿を編集したので、 'Image'ウィジェットが表示されます。残りの問題は、 'Button'ウィジェットが携帯電話のタッチに反応しないことです。 – Arief

+0

@Ariefは問題を再現するためのコードを提供できますか? –

+0

私はポストを編集しました。@MikhailGerasimov – Arief

関連する問題