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

news2024/11/24 21:29:53

目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后端路线指导(4):后端春招秋招经验分享

后端春招&秋招经验分享 春招(暑期实习) /秋招是应届生非常重要的应聘时间,每一个想就业的同学一定要有所了解! 本篇内容,老白将与大家分享暑期实习和秋招如何应对招聘的个人经验,希望每个同学看完都能有所收获! 首先说明一下老白对于面试核心竞争力的…

Android图片圆角转换 RoundedImageView开源项目 小记

属性的意义: makeramen:border_width“2dip” 表示图片的边框宽度为2个dp makeramen: corner_radius表示为 图片转圆角的弧度 修改 makeramen:corner_radius“100dip” 当 corner_radius 设置为100dp 的时候 会呈现为圆形 . ( 注: com.makeramen.rounded.Ro…

MySQL表的增删改查初阶(下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

多重排序【今日题记】

多重排序 多重排序题目分析思路代码代码结构体知识多重排序 需要对多个条件进行排序,因此可以称之为多重排序。 题目 某生物实验室记录了n种(n<=1000)病毒信息,每种病毒都有编号、传染性和致病性三个基本信息,编号是1000-9999的人工编号,其中的传染性和致病性是用0-10…

SVN学习(002 svn冲突解决)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第20p-第p29的内容 冲突 产生冲突的操作 &#xff08;第一种 相互不影响的操作&#xff09; 用户1修改第二行 用户2修改第四行 用户1提交 用户2提交&#xff0c;提交的时候会提示版本已过时 这时将用…

力扣SQL 即时食物配送 II min函数 嵌套查询

Problem: 1174. 即时食物配送 II &#x1f468;‍&#x1f3eb; 参考题解 Code -- 计算立即配送的订单百分比 select round (-- 计算订单日期与客户偏好配送日期相同的订单数量sum(case when order_date customer_pref_delivery_date then 1 else 0 end) * 100 /-- 计算总订…

掌握Three.js:学习路线,成为3D可视化开发的高手!

学习Three.js可以按照以下路线进行&#xff1a; 基础知识&#xff1a; 首先要了解基本的Web开发知识&#xff0c;包括HTML、CSS和JavaScript。如果对这些知识已经比较熟悉&#xff0c;可以直接进入下一步。 Three.js文档&#xff1a; 阅读Three.js官方文档是学习的第一步。官…

如何下载和安装SQLynx数据库管理工具? (MySQL作为测试数据库)

目录 1. 官网下载 2. 安装软件 3. 启动SQLynx软件 4. 开始使用 5. 执行第一条SQL语句 6. 总结 SQLynx是一款先进的Web SQL集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为数据库管理、查询和数据分析设计。作为一个基于浏览器的工具&#xff08;同时也支持桌面…

掌握 NumPy:高效数组处理综合指南(第 1/2 部分)

掌握 NumPy&#xff1a;高效数组处理综合指南&#xff08;第 1/2 部分&#xff09; 文章目录 一、介绍二、什么是Numpy&#xff0c;我们为什么要使用它&#xff1f;三. 数组初始化四. 计算速度和内存使用量五、内存使用情况六、数据类型七、索引和切片 一、介绍 你们以前听说过…

连接和断开信号演示之二

代码; #include <gtk-2.0/gtk/gtk.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <glib-2.0/glib.h> #include <stdio.h>void button_press(GtkEventBox *ebox,GdkEventButton *event,GtkLabel *label) {const char *citem;switch(event->type…

[图解]建模相关的基础知识-15

1 00:00:01,030 --> 00:00:05,820 接下来&#xff0c;我们就开始讲解的知识点 2 00:00:05,830 --> 00:00:11,810 就是范式知识点 3 00:00:12,130 --> 00:00:17,490 关系这个理论里面&#xff0c;随着历史的发展 4 00:00:17,700 --> 00:00:21,280 它发展出很多的…

力扣随机一题 模拟+字符串

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 1910.删除一个字符串中所有出现的给定子字符串【中等】 题目&#xff1a; …

基于STM32的智能工厂环境监测系统

目录 引言环境准备智能工厂环境监测系统基础代码实现&#xff1a;实现智能工厂环境监测系统 4.1 数据采集模块4.2 数据处理4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;智能工厂管理与优化问题解决方案与优化收尾与总结 1. 引言 智能工厂环境监测系统通过…

【转】FreeRTOS通用移植,以keil和IAR工程 M7核为例

目录 keil: IAR keil: 原文在https://bbs.eeworld.com.cn/thread-1281875-1-1.html 本篇讲述移植FreeRTOS,并创建运行一个任务&#xff0c;对象芯片为M7系列的兆易创新GD32H7xx系列。 一.准备工作 1.下载FreeRTOS源码官网 http://www.freertos.org/ 或者托管网站FreeRTOS…

Vue71-嵌套(多级)路由

一、需求 二、开发步骤 2-1、编写路由组件 2-2、编写路由规则 2-3、编写路由标签<router-link>、<router-view> 三、小结

(vue3)基于vite+vue3+element-plus项目创建

(vue3)基于vitevue3element-plus项目创建 vue.js官方中文文档&#xff1a;https://cn.vuejs.org/guide/quick-start.html vite官方中文文档&#xff1a;https://cn.vitejs.dev/guide/ element-plus官网&#xff1a;https://element-plus.org/zh-CN/guide/installation.html 第…

Github 2024-06-19 C开源项目日报 Top9

根据Github Trendings的统计,今日(2024-06-19统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目9C++项目1Netdata: 开源实时监控平台 创建周期:4020 天开发语言:C协议类型:GNU General Public License v3.0Star数量:68982 个Fork数量…

echarts实现折线图点击添加标记

文章目录 背景一、代码示例 背景 业务场景体现在功能层面主要两点&#xff0c; 折线图表设置点击事件点击事件与图标渲染标记绑定 对于节点没有被添加标记的可以&#xff0c;弹框提示添加标记&#xff0c;并提供标记内容输入框&#xff0c;已经添加过标记的点&#xff0c;点…

python pynput实现鼠标点击两坐标生成截图

脚本主要实现以下功能&#xff1a; 按ctrl开始截图&#xff0c;点击两个坐标&#xff0c;保存截图tk输出截图文本信息&#xff0c;文本输出内容倒序处理默认命名为A0自增。支持自定义名称&#xff0c;自增编号&#xff0c;修改自定义名称自增重新计算清空文本框内容 from pyn…

笨蛋学算法之LeetCodeHot100_5_三数之和(Java)

package com.lsy.leetcodehot100;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class _Hot6_三数之和 {public static List<List<Integer>> threeSum(int[] nums) {//先排序数组Arrays.sort(nums);//存放结果集List<Lis…