应用程序在Python2&;的Windows上运行良好;Python3,但接收错误:导入android失败,按钮无响应

应用程序在Python2&;的Windows上运行良好;Python3,但接收错误:导入android失败,按钮无响应,android,python-2.7,python-3.x,kivy,buildozer,Android,Python 2.7,Python 3.x,Kivy,Buildozer,这是一个使用python2.7编写的应用程序,使用kivy和numpy模块。我通过以下步骤安装了buildozer,但我没有安装sudopiphttps://github.com/kivy/buildozer/archive/master.zip。在android上部署应用程序后,我在日志中看到一些错误: 10-10 17:44:49.497 19176 19207 I python : [ERROR ] [Image ] Error reading file .\logo_ex

这是一个使用
python2.7
编写的应用程序,使用
kivy
numpy
模块。我通过以下步骤安装了
buildozer
,但我没有安装
sudopiphttps://github.com/kivy/buildozer/archive/master.zip
。在android上部署应用程序后,我在日志中看到一些错误:

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.
这是
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();
无法导入“android”模块

此消息与图像无关。如果您不明确使用
android
模块,它不会影响您的项目。要避免日志中出现这一行,只需将
android
添加到
buildozer.spec
中的需求中

读取文件时出错。\logo\u example1.png

此错误表示找不到图像。我不知道
\\logo\u 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=(600700)
。移除它,一切都会工作

看起来像是更改了
窗口。大小
以某种方式破坏了kivy触摸点检测。如果要在Windows上更改窗口大小,请配置或包装
window.size
随更改而更改

无法导入“android”模块

此消息与图像无关。如果您不明确使用
android
模块,它不会影响您的项目。要避免日志中出现这一行,只需将
android
添加到
buildozer.spec
中的需求中

读取文件时出错。\logo\u example1.png

此错误表示找不到图像。我不知道
\\logo\u 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=(600700)
。移除它,一切都会工作


看起来像是更改了
窗口。大小
以某种方式破坏了kivy触摸点检测。如果您想更改Windows上的窗口大小,请配置或包装
window.size
changing with.

您可能需要将
android
添加到buildozer.spec中的您的要求中。@Tshirtman我可以问一下原因吗。。?我认为官方的步骤会足够紧凑。@Tshirtman我已经试过了,但按钮仍然没有收到任何响应。您可能需要在buildozer.spec中将
android
添加到您的需求中。@Tshirtman我可以问一下原因吗。。?我想官方的步骤会足够紧凑。@Tshirtman我已经试过了,但按钮仍然没有收到任何响应。谢谢,我已经编辑了帖子,
图像
小部件现在显示出来。剩下的问题是
按钮
小部件对手机上的触摸没有响应。@Arief您能提供代码重现问题吗?我已经清除了
窗口。大小
,而
触摸
在手机上仍然没有响应。但是我也使用了
Window.clearcolor=…
,我会在几秒钟内不断地更新它。还删除了它,但仍然没有响应。但是等等。。。我想可能是因为我使用了
Window.mouse\u pos
来定位光标,这就是为什么它只在Windows上工作??很抱歉,我没有在上面的测试代码中包含此内容。@Arief,我运行的代码与您发布的代码完全相同,但也没有响应(实际上您可以按按钮,但可以在屏幕的其他位置—相对于实际按钮位置的右上角)。当我删除
Window.size=(600700)
时,我在安卓系统上工作得非常完美。我不知道要添加什么:)请确保在没有该行的情况下重建应用程序,并且没有添加任何其他代码。谢谢。我又试了一次,没有
Window.size
Window.mouse\u pos
。该按钮现在在手机上接收到触摸响应,但在松开后不久就崩溃了。错误表示无法加载
图像
对象。在我将
png
文件移动到与
main.py
相同的文件夹后,现在它可以在手机上正常工作(仅通过使用
filename.png
更改文件地址)。另外,在
buildozer.spec
中更改
全屏
没有任何区别。谢谢,我编辑了这篇文章,
图像
小部件现在显示出来。剩下的问题是
按钮
小部件对手机上的触摸没有响应。@Arief您能提供代码重现问题吗?我已经清除了
窗口。大小
,而
触摸
在手机上仍然没有响应。但是我也使用了
Window.clearcolor=…
,我会在几秒钟内不断地更新它。还删除了它,但仍然没有响应。但是等等。。。我想可能是因为我使用了
Window.mouse\u pos
来定位光标,这就是为什么它只在Windows上工作??很抱歉,我没有在上面的测试代码中包含此内容。@Arief,我运行的代码与您发布的代码完全相同,但也没有响应(实际上您可以按按钮,但可以在屏幕的其他位置—相对于实际按钮位置的右上角)。当我删除
Window.size=(600700)
时,我在安卓系统上工作得非常完美。我不知道要添加什么:)请确保在没有该行的情况下重建应用程序,并且没有添加任何其他代码。谢谢。我又试了一次,没有
Window.size
Window.mouse\u pos
。该按钮现在在手机上接收到触摸响应,但在松开后不久就崩溃了。错误表示无法加载
图像
对象。在我将
png
文件移动到与
main.py
相同的文件夹后,现在它可以在手机上正常工作(仅通过使用
filename.png
更改文件地址)。而且,我没有看到