移动开发中的Python



众所周知, Python的范围很广:从Web技术到游戏行业,再到NASA项目结束。 Python几乎可以在任何地方使用:从掌上电脑和智能手机到网络服务器,以及几乎所有知名平台,例如Windows,Linux / UNIX,macOS,Palm OS,Raspberry PI等。 得益于Kivy框架 Python在2011年掌握了用于开发iOSAndroid应用程序的移动平台,并且在2015年 Python使用KivyMD库学习了Material Design的使用。

KivyMD库是Material Design风格的小部件的集合,可在Kivy跨平台框架中使用。 在一年前发布的上一篇文章KivyMD-life go on中 ,我已经谈到了该库的派生,但是在问题和邮件中,我经常收到有关PyPi安装KivyMD时在派生中声明的功能不可用的通知 。 确实如此,因为PyPi包含了四年前GitLab存储库中的旧版本库,作者不再支持该库,并且由于我们不想为我们的fork使用新的名称(例如KivyMD-fork), 因此使用该库将程序包加载到PyPi中名字,决定写信给KivyMDAndrésRodríguez (@mixedCase_)的作者,并要求他删除他的包裹。 经过长时间的讨论,Andre邀请我们加入Python Package ,但前提是他仍是该库的合著者。 因此,现在正式的图书馆资料库在这里 ,我们的最新更新可在PyPi获得

那么,一年后图书馆发生了什么变化? 感谢那些在项目中使用KivyMD的人,我们消除了很多错误。 存储库中有81个封闭的问题。 这是如果您不考虑在Discord 在线聊天用户支持中解决了大部分问题的事实。 其中有俄语和英语两个部分。 当前并非所有材料设计规范都得到实施,因为几乎有两个人在空闲时间在图书馆工作。 可以在此列表中查看已实施的内容和我要实施的内容。 它远未完成,但您可以对其进行补充,因为所有人都可以使用编辑权限。 以下是一些新的小部件:

工具提示


材料设计工具提示

代码示例
from kivy.lang import Builder from kivy.factory import Factory from kivymd.app import MDApp Builder.load_string(''' #:import random random #:import hex_colormap kivy.utils.hex_colormap #:import get_color_from_hex kivy.utils.get_color_from_hex #:import md_icons kivymd.icon_definitions.md_icons #:set ICONS list(md_icons.keys()) <IconButtonTooltips@MDIconButton+MDTooltip> <ExampleTooltips@BoxLayout> orientation: 'vertical' MDToolbar: title: "Example Tooltips" md_bg_color: get_color_from_hex(hex_colormap["crimson"]) elevation: 10 left_action_items: [['dots-vertical', lambda x: None]] tooltip_text: "MDToolbar" Screen: BoxLayout: size_hint: None, None size: self.minimum_size padding: "10dp" spacing: "10dp" pos_hint: {'center_x': .5, "center_y": .9} IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" ''') class Test(MDApp): def build(self): return Factory.ExampleTooltips() Test().run() 



* Mac OS示例



底部应用栏


材质设计底部应用栏

左侧是Flutter演示应用程序中Bottom App Bar工作原理的示例,右侧是KivyMD Bottom App Bar库的演示。

代码示例
 from kivy.factory import Factory from kivymd.app import MDApp from kivy.lang import Builder Builder.load_string( """ <BottomAppBar@Screen> BoxLayout: spacing: dp(10) orientation: 'vertical' MDToolbar: title: "Title" md_bg_color: app.theme_cls.primary_color left_action_items: [['menu', lambda x: x]] Widget: MDBottomAppBar MDToolbar: title: "Title" icon: "git" type: "bottom" left_action_items: [["menu", lambda x: x]] """ ) class BottomAppBarTest(MDApp): def build(self): return Factory.BottomAppBar() BottomAppBarTest().run() 


背景幕


材料设计背景

左侧是Flutter演示应用程序中Backdropr如何工作的示例,右侧是KivyMD库的Backdropr演示

我们还在库中添加了“ 研究”部分,该部分将托管演示应用程序,例如ShrineBasil等。 现在,您可以看到Shrine应用程序的外观:


这是同一件事,但来自Flutter应用程序:


因此KivyMD可以Android设备上使用。 当然,在某些地方存在性能问题,但这很可能与Kivy本身有关。 例如,启动“繁重的”库仍然存在问题。 在下面的视频中,我给出了一个使用OpenCV作为Android相机后端的示例应用程序:


在这种情况下,什么也做不了,因为在开始时,不仅加载OpenCVNumPy ,而且还会进行本机调用以连接所有这些。 但是,在KivyKivyMD上设计良好的移动应用程序很快就会启动。 所有这些都适用于移动平台。 在桌面上没有这样的问题,并且KivyMD那里看起来简直太美了

Mac OS:


Windows:


原则上,所有这些都可以在哪个操作系统上运行,因为KivyMDKivy一样,到处看起来都是一样的。 您必须自己决定您的应用程序将具有哪种应用程序,我认为这仅仅是一个优点。

我们有很多计划,但手不够。 例如,尽管没有时间来完善台式机系统的文件管理器,但我想引入对iOS小部件的支持以及更多其他功能……但是,尽管存在所有缺点,但每天下载量和对该库的兴趣却在不断增长:


如果您像我们一样热爱Python,请加入社区!

YouTube频道
KivyMD新闻
不和谐聊天

Source: https://habr.com/ru/post/zh-CN479126/


All Articles