python库BeeWare,一个如雷贯耳的可以创建原生应用程序的库

目录

BeeWare 包括以下主要组件和工具:

创建BeeWare虚拟环境

配置BeeWare

 创建一个新的BeeWare项目( Hello World! )

尝试 Hello World 样例



BeeWare 是一个开源项目,旨在帮助开发者使用 Python 创建原生应用程序,覆盖了移动、桌面和 Web 平台。BeeWare 通过提供一系列工具和库,使得开发者可以利用 Python 的简洁和强大来构建跨平台的应用程序,而无需学习其他语言或工具。

BeeWare 包括以下主要组件和工具:

  1. Toga:Toga 是一个用于创建原生桌面应用程序的 Python 框架,支持多个平台,包括 macOS、Windows 和 Linux。它提供了丰富的 UI 组件和布局管理器,以及与平台原生控件的无缝集成,使得开发者可以轻松地构建具有原生外观和感觉的应用程序。

  2. Briefcase:Briefcase 是一个用于将 Python 应用程序打包为可执行文件的工具。它支持将 Python 代码转换为原生的移动应用程序(如 Android APK 和 iOS 应用)、桌面应用程序(如 Windows 可执行文件和 macOS 应用)以及 Web 应用程序,从而让开发者能够将他们的 Python 代码发布到各种不同的平台上。

  3. Rubicon-ObjC 和 Rubicon-Java:这是两个用于在 Python 中调用 Objective-C 和 Java 代码的库,使得开发者能够利用现有的 Objective-C 和 Java 库来扩展他们的 Python 应用程序,从而实现更多的功能和特性。

  4. Batavia:Batavia 是一个用于在浏览器中运行 Python 代码的项目,它通过将 Python 代码转换为 JavaScript 来实现跨平台的支持。这使得开发者可以编写一次 Python 代码,然后在 Web 浏览器中运行,而无需改变任何代码。

通过 BeeWare,开发者可以使用熟悉的 Python 语言和工具来构建原生应用程序,而无需学习其他语言或工具。这为 Python 社区的开发者提供了一个更广阔的舞台,让他们能够参与到移动应用、桌面应用和 Web 应用的开发中。

创建BeeWare虚拟环境

在工程文件夹下继续以下代码,创建beeware虚拟环境并激活。当然这一步也可以用conda等实现。(以下代码为Windows 命令行窗口创建虚拟环境的例子。)

md beeware-tutorial
cd beeware-tutorial
py -m venv beeware-venv
beeware-venv\Scripts\activate

BeeWare 的官方网站提供了丰富的文档、示例代码和社区支持,帮助开发者快速上手并解决问题。如果你对使用 Python 构建原生应用程序感兴趣,不妨了解一下 BeeWare,它可能会成为你的理想选择。

配置BeeWare

激活虚拟环境后,pip下载相关包体(注意,根据官方说法,建议采用python -m操作,以便自动更新)。

python -m pip install briefcase

创建一个新的BeeWare项目( Hello World! )

下载完毕后,即可开始创建一个新的项目了!使用以下方法:

briefcase new

随后将出现以下几个项目初始化设置(直接回车将采用方括号里的内容):

  1. Formal Name [Hello World]:(填入项目名称,该处是展示给用户的名称。)
  2. App Name [helloworld]: (对应的项目名称,该处是提供给机器编译所需的名称)
  3. Bundle Identifier [com.example]: (应用商店标识,如果没有直接回车跳过此条目。)
  4. Project Name [Hello World]: (Briefcase提供了多应用管理,如果此项目只有一个应用,可以采用与Formal Name 一致的名称。)
  5. Description [My first application]: (填写应用的一行描述。)
  6. Author [Jane Developer]: (应用开发作者署名)
  7. Author's Email [jane@example.com]: (作者联系邮箱)
  8. Application URL [https://example.com/helloworld]: (未来的应用发布页网址)
  9. Project License [1]: (根据提示选取应用开源协议,当然也可以选择其他不开源的协议)
  10. GUI Framework [1]: (选择GUI框架,可选[1]Toga, [2]PySide6, [3]PursuedPyBear, [4]Pygame 或无GUI [5]None .其中仅[1]Toga支持ios/android平台的打包分发。)

注意,在该步骤中需要保证git clone能够正常连接,也即第三部分配置成功。

 

尝试 Hello World 样例

在完成上一部分的新建项目后,会有以下提示:

[helloworld] Generating a new application 'Hello World'
Using app template: https://github.com/beeware/briefcase-template, branch v0.3.17

[helloworld] Generated new application 'Hello World'

To run your application, type:

    $ cd helloworld
    $ briefcase dev

我们可以发现,Briefcase在当前目录下新建了一个helloworld文件夹(App Name),若要以开发者身份运行此应用,则需要:

cd helloworld
briefcase dev

当使用 BeeWare 的 Toga 框架时,你可以使用 Python 编写代码来创建原生桌面应用程序。以下是一个简单的示例,演示了如何使用 Toga 创建一个包含按钮和标签的桌面应用程序:

import toga

def button_handler(widget):
    label.text = 'Hello, BeeWare!'

def build(app):
    box = toga.Box()

    # 创建一个按钮
    button = toga.Button('Click me', on_press=button_handler)
    
    # 创建一个标签
    global label
    label = toga.Label('Welcome to BeeWare!')

    box.add(button)
    box.add(label)

    # 创建窗口
    main_window = toga.MainWindow(title=app.name)
    main_window.content = box

    return main_window

def main():
    # 创建并运行应用程序
    app = toga.App('MyFirstApp', 'org.example.myfirstapp', startup=build)
    app.main_loop()

if __name__ == '__main__':
    main()

在这个示例中,我们首先导入了 toga 模块,然后定义了一个按钮的事件处理函数 button_handler 和一个应用程序的构建函数 build。在 build 函数中,我们创建了一个 Box 容器,并向其中添加了一个按钮和一个标签。最后,我们创建了一个主窗口,并将 Box 容器设置为其内容,从而构建了一个基本的桌面应用程序界面。

当你运行这个示例时,它将会启动一个简单的桌面应用程序窗口,包含一个按钮和一个标签。当你点击按钮时,标签的文本将会变成“Hello, BeeWare!”。

这只是一个简单的示例,Toga 提供了许多其他丰富的 UI 组件和布局管理器,以及与平台原生控件的无缝集成,使得你可以构建具有原生外观和感觉的应用程序。同时,BeeWare 还提供了 Briefcase 工具,可以帮助你将 Python 应用程序打包为可执行文件,以便在不同的平台上发布和运行。

Python魔法方法__call__深入详解-CSDN博客文章浏览阅读1.3k次,点赞25次,收藏30次。_call____call__方法不仅限于无参数调用,它还可以接收任意数量的位置参数和关键字参数,从而实现更加复杂的逻辑。比如,创建一个Multiplier# 使用Multiplier类# 传递参数调用实例print(times_three(10)) # 输出: 30通过这种方式,__call__魔法方法不仅增加了代码的可读性和灵活性 ,还为实现更高级的设计模式 ,如装饰器、策略模式等,奠定了基础。掌握__call__的应用,是深入理解Python面向对象编程的重要一步。https://blog.csdn.net/xyh2004/article/details/139652422
Python自定义接口,也能玩得这么花-CSDN博客文章浏览阅读1.1k次,点赞25次,收藏28次。在Python中,抽象基类(Abstract Base Class,简称ABC)是一种特殊形式的类,用于定义接口规范,即一组方法的声明,但不提供具体实现。它允许子类继承并强制要求实现这些抽象方法。Python通过abc模块提供了对抽象基类的支持,这对于设计框架和定义接口标准非常有用。要定义一个协议,可以使用类。下面展示如何定义一个简单的Drawable协议,要求对象实现draw()...在这个例子中,Drawable协议定义了一个draw方法,任何实现了draw。https://blog.csdn.net/xyh2004/article/details/139625958
Python定时任务最常用的8种实现方式-CSDN博客文章浏览阅读1.2k次,点赞39次,收藏21次。在Python中,利用标准库threading中的Timer类可以轻松创建定时任务,这对于需要在后台独立于主线程运行的任务特别有用。下面详细介绍如何使用threading.Timer来实现定时任务 ,并探讨定时任务的管理与取消策略。https://blog.csdn.net/xyh2004/article/details/139557860

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/732512.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统架构师考点--数据库系统

大家好。今天我来总结一下数据库系统的相关考点。本考点一般情况下上午场考试占3-5分,下午场案例分析题也会出现。 一、数据库系统 数据:数据库中存储的基本对象,是描述事物的符号记录。数据的种类:文本、图形、图像、音频、视频、学生的档…

【机器学习】大模型驱动下的医疗诊断应用

摘要: 随着科技的不断发展,机器学习在医疗领域的应用日益广泛。特别是在大模型的驱动下,机器学习为医疗诊断带来了革命性的变化。本文详细探讨了机器学习在医疗诊断中的应用,包括疾病预测、图像识别、基因分析等方面,并…

天擎客户端卸载 自我保护异常

问题:客户端卸载失败提示“检测到自我保护状态异常,停止卸载” 下列操作,均在客户端进行,别改成服务端的了 进入天擎客户端主目录,默认路径为 C:\Program Files (x86)\Qianxin\Tianqing 将avsecbase.dll 重命名为 1…

移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析

城市管理综合执法管理平台实现执法办案、业务全流程在线办理,依托移动端PC端的“两端”应用模式,保障能够通过信息化手段进行日常的执法办案工作,强化执法监督功能。提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析等功能&a…

【数据结构与算法】树的遍历,森林遍历 详解

树的先根遍历、后根遍历对应其二叉树的哪种遍历 树的先根遍历对应其二叉树的先序遍历(根-左-右)。树的后根遍历对应其二叉树的中序遍历(左-根-右)。 森林的先根遍历、中根遍历对应其二叉树的哪种遍历? 森林的先根遍历对应其二…

细说MCU输出两路PWM波形及改变占空比的实现方法

目录 一、硬件及工程 二、建立工程 三、代码修改 四、下载运行 五、改变PWM波形占空比 1、定义两个全局变量 2、启动定时器 3、重写TIM3中断回调函数 六、下载并运行 一、硬件及工程 文章依赖的硬件及工程配置参考本文作者的其他文章:细说ARM MCU的串口接…

代码随想录算法训练营第六十七天 | 字符串接龙、有向图的完全可达性、岛屿的周长

字符串接龙 文字讲解:110. 字符串接龙 | 代码随想录 解题思路 本题只需要求出最短路径的长度就可以了(想到广搜),不用找出具体路径。 所以这道题要解决两个问题: 图中的线是如何连在一起的起点和终点的最短路径长…

java之url任意跳转漏洞

1 漏洞介绍 URLRedirect url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意攻击,url重定向主要用来钓鱼,比如url跳转中最常见的跳转在登陆口,支付口,也就是一旦登陆将会跳转任意自己构造的网站&#xf…

【Pandas驯化-11】一文搞懂Pandas中的分组函数groupby与qcut、fillna使用

【Pandas驯化-11】一文搞懂Pandas中的分组函数groupby与qcut、fillna使用 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获…

Linux常用命令(16)—awk命令(有相关截图)

写在前面: 最近在学习Linux命令,记录一下学习Linux常用命令的过程,方便以后复习。仅供参考,若有不当的地方,恳请指正。如果对你有帮助,欢迎点赞,关注,收藏,评论&#xf…

蓝桥杯 经典算法题 合并排序数组

题目: 题解: leetcode上也有这道题一模一样。和归并排序的小过程基本一模一样,只不过因为题目要求只能将arr2中元素合并到arr1中,一种可行的方法是按元素从大到小,顺序从每个序列尾部开始操作,第一填的位置…

杀疯了!PerfXCloud-AI大模型夏日狂欢来袭,向基石用户赠送 ∞ 亿Token!

【澎峰科技重磅消息】 在全球范围内大模型正逐渐成为强大的创新驱动力。在这个充满激情的夏日,PerfXCloud为开发者和企业带来了前所未有的福利: 1. 零成本亲密、深度体验大模型,提供大量示范案例。 2. 向基石用户赠送∞亿Token的激励计划。…

终于找到了免费的云服务器

今天朋友推荐了一个免费的云服务器:“阿贝云” 我最喜欢的是它的"免费虚拟主机"“免费云服务器”,省了我好多钱,我的使用感受是用起来经济实惠省心,不要钱的东西谁不喜欢呢,对于普通开发者来说,…

程序猿大战Python——面向对象——继承基础

定义类的几种语法 目标:了解定义类的标准语法。 我们知道,可以使用class关键字定义类。 在类的使用中,定义方式有三种: (1)【类名】 (2)【类名()】 (3)【…

ubuntu 20.04 访问csdn报错 Secure connection failed 解决

问题原因: 我一边更新源 sudo apt update & apt upgrade一边在看csdn,估计是这个导致的. 所以我直接把华为源换成了阿里源。 sudo apt update & apt upgrade再更新一次,解决。

探索语言模型的智能飞跃:预训练损失与突现能力的新视角

在人工智能的辉煌编年史中,语言模型(LMs)的崛起标志着自然语言处理领域的一个巨大飞跃。随着技术的进步,这些模型不仅在规模上日益庞大,更在性能上不断刷新着人们的认知边界。它们在问答、翻译、文本摘要等任务上展现出…

1996-2023年各省农林牧渔总产值及农业、林业、牧业、渔业总产值数据(无缺失)

1996-2023年各省农林牧渔总产值及农业、林业、牧业、渔业总产值数据(无缺失) 1、时间:1996-2023年 2、指标:农林牧渔总产值、农业总产值、林业总产值、牧业总产值、渔业总产值 3、来源:国家统计局、各省年鉴 4、范…

基于uni-app和图鸟UI的智慧农业综合管控平台小程序技术实践

摘要: 随着信息化技术的飞速发展,智慧农业已成为推动农业现代化、提升农业生产效率的重要手段。本文介绍了一款基于uni-app框架和图鸟UI设计的智慧农业综合管控平台小程序,该平台整合了传感器控制、农业数据监测、设施管控、农业新闻传播以及…

深入了解 AndroidX ConstraintLayout 中的 Barrier

androidx.constraintlayout.widget.Barrier(简称Barrier)是 ConstraintLayout 2.0 中引入的一个新特性,它可以极大地简化复杂布局的实现。本文将详细介绍Barrier 的概念、使用方法以及在实际开发中的应用场景。 什么是 Barrier? …

Web渗透-SSRF服务端请求伪造

SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者利用漏洞服务器发送恶意请求的攻击方式。SSRF漏洞通常出现在服务器端的web应用中,应用允许用户提供的输入被服务器用来发起请求,而没有对输入进行充…