SEO只是外表
技术才是我的追求

Python Kivy学习笔记5 – 知识点

在使用Kivy的过程中遇到各种问题,这里记录下来当作kivy知识点,以便以后少走弯路。

APK应用打开即闪退

手机打开APK应用就立刻闪退,这个问题很多第一次生成apk后都会出现,刚开始遇到就毫无头绪。按我自己经验一般有以下几种可能:

  • 第三方库没有在buildozer.spec配置文件加进去。例如我python使用的requests库,但是在参数requirements中忘记加进去了,就出现闪退。
  • APP应用的权限没有分配好。例如APP需要访问网络就需要分配网络权限:android.permissions = INTERNET
  • APP打包时没有清理环境。之前有打包项目或者再次打包APP,都需要先清理上一次的打包环境,使用命令:kdpp clean,再进行打包就不会出现问题

当然也可能是代码的其他问题引起闪退的,我们就需要使用ADB调试工具包连接手机,找到APP应用的错误日志,查清楚闪退的原因,再进行修改。

查找APP日志步骤可以参考:https://blog.csdn.net/weixin_42269667/article/details/106517353
ADB调试工具网上有绿色安装包下载就可以用,通过电脑连接手机,再查看手机应用的信息。手机要开通开发者调试模式

Kivy控件树

Kivy以树的形式来组织控件。你的应用程序会有一个根控件,通常会含有若干的子控件children,这些子控件还可以有自己的子控件。一个控件的子控件会以children属性的形式表述。

可以用以下方法来操作控件树:

  • add_widget(): 添加一个控件作为子控件;
  • remove_widget(): 从子控件列表中去掉一个控件;
  • clear_widgets(): 清空一个控件的所有子控件。

遍历控件树

控件类实例的子控件children列表属性中包含了所有的子控件。所以可以用如下的方式来进行遍历:

root = BoxLayout()
    for child in root.children:
        print(child)

然而,这样的操作可得谨慎使用,请一定用下面这种方法来做一下备份:

for child in root.children[:]:
    if child.width > 100:
        root.remove_widget(child)

kivyMD介绍

kivyMD则是一个基于kivy的一个扩展包,它的目的是提供一个类似于Google Material Design的一套控件,这样,使用者就可以方便的将android上的Material Design效果移植到其他的平台上去。

简单来说,kivyMD就是界面更好看的kivy。其实kivy本身就不适合生产环境使用,做些小工具,不懂Java只会python,使用kivy快速开发,还可以凑合。kivy已经不值得深入学习使用,更何况是kivyMD,有那个精力还不如直接奔着新开发语言Flutter学习。

kivy控件布局示例

kivy本身自带一个案例界面,可以操作各种布局和控件,修改代码可以立刻看到界面效果,非常利于kivy学习。

我是使用Pycharm安装虚拟环境,该案例位于:

F:\app\venv\share\kivy-examples\demo\kivycatalog\main.py
app是我项目的文件夹。在pycharm中直接运行该文件就可以,效果如下:

未经允许不得转载:棋哥SEO博客 » Python Kivy学习笔记5 – 知识点

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址