beeware 教程中文版同步对照

手机码字易错漏,一些链接不好加,回去摸到电脑一定改,还请大家暂时见谅…

  • 品名:蜂具
  • 配料:toga、briefcase、rubicon objectc、rubicon java(译注:他说你可以不用python,但后面貌似并没有说不用Python怎么办😂另有一致命弱点,他的全部文件都要网络下载,而且全部会存在appdata下,小心硬盘!
  • 参考参数:联通千兆宽带,前7step下载累计用时50min,build累计用时70min

(哈哈差点打表都不会了)如果你想要跑蜂具,你的系统盘需要

功能累计系统盘所需空间
python运行300M
Windows等编译打包500M
android虚拟机build7GB
android虚拟机run8GB

(链接)蒟蒻独家硬盘清理方式

  • 主治功能:让你的程序:码一次,到处跑!
    (译注:我很怀疑)
  • 适用人群:目前蜂具已经支持windows mac linux ios android和web啦,不过web功能还不太成熟
    (正式开始)
第零步

1.1 安装一个3.7或以上的python和一个git,然后保证能从系统命令运行他们

(译注:python如果你不想给自己找事最好装3.8,另,你不需要手动检查是否添加到环境变量,如果你安装了而它提示你没安装那就是没添加,你只需要重装一次(python/git)软件就可了)
1.2 创建一个虚拟环境,然后所有组件会被隔离在里面,这样即使你的程序裂开来也不会炸到电脑。这是可选的
(译注:确实可以有保护作用,但是千万不要以为删掉虚拟环境就可完事了)

md beeware-tutorial
cd beeware-tutorial
::你也可以在你想创建的文件夹(最好为空)里Shift+右键,等价于上2
py -m venv beeware-venv
::py是python.exe,前提是你要在环境变量里
beeware-venv\Scripts\activate.bat
::script是自动生成的
注意
以后你重启软件或电脑 仍需重复此操作
我认为最快捷的方式是
桌面shift右键-拖入activate bat快捷方式enter再输入cd 你的工程名也就是文件夹名

(此处应有动图虚拟环境)

第一步

首先你要安装briefcase

python -m pip install briefcase

然后接下来全在跟briefcase打交道了
briefcase步骤1

briefcase new
cd helloworld
::或者你自己的appname,无空格
briefcase dev

译注:new命令弹出的选项解释

干嘛的默认值(直接回车)
formal name没嘛用hello world
app nameapp名称,唯一有点用的hello world
project name也没嘛用hello world
bundle域名,如果你有com.example
description描述,无关紧要hello world
author作者怎可能有默认值?
author’s email作者怎可能有默认值?
url你的网址https://example.com/helloworld
License许可证,随BSD
GUI framework图形用户界面用什么格式toga

然后现在会bling地弹一个窗口出来,关掉继续

现在你已经用掉了300MB系统盘和50MB内存

第二步

程序的脚本是helloworld/src/helloworld/app.py,其他两个看看就好
接下来的话,如果你想试试,你可以把helloworld class替换成下面这坨,但是不要动头尾不属于class的内容

class HelloWorld(toga.App):
    def startup(self):
        main_box = toga.Box(style=Pack(direction=COLUMN))

        name_label = toga.Label(
            'Your name: ',
            style=Pack(padding=(0, 5))
        )
        self.name_input = toga.TextInput(style=Pack(flex=1))

        name_box = toga.Box(style=Pack(direction=ROW, padding=5))
        name_box.add(name_label)
        name_box.add(self.name_input)

        button = toga.Button(
            'Say Hello!',
            on_press=self.say_hello,
            style=Pack(padding=5)
        )

        main_box.add(name_box)
        main_box.add(button)

        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = main_box
        self.main_window.show()

    def say_hello(self, widget):
        print("Hello", self.name_input.value)
注意
不推荐这样学toga-既然你已经知道在什么地方加入设计代码了-你就应该先明白自己想设计什么-要啥控件再搜索实现方法去学习
引用coder-pig大大一句话-你是学习不是收藏不属于自己的laji
另外-假如你是直奔安卓而去-toga设计效率远不如android studio的xml设计
briefcase dev
briefcase run
::因为briefcase是自动运行的所以你可以打briefcase dev或者briefcase run -d
第三步

将你的程序变成windows安装包

briefcase create
::会要等一会
briefcase build
briefcase run
::运行你的application,如果你要打包,这一句可以忽略
briefcase package
第四步

4.1. 如何在改变了源程序后更新应用文件

briefcase update
briefcase run
::等价于briefcase run -u
  1. 如何在改变了源程序后更新安装包
briefcase update
briefcase package
::等价于briefcase package -u
briefcase new
briefcase dev
briefcase run
briefcase run -d
briefcase create 第一次
briefcase build/update
briefcase build/update
briefcase package
briefcase run -u
briefcase package -u
安装
总结亿下
开始
新项目app.py
exe,obj等输出
应用程序运行!
应用构建环境
应用构建中间文件
应用程序安装包
应用运行!
第五步

选择你的移动载体(我是按照安卓的做下去的了)

第六步

使用这三条命令一次完成android构建

briefcase create android
briefcase build android
briefcase run android
注意-第一条命令将使用约3GB硬存-第二条命令可能会使用约5GB硬存-都会在你的C盘
同时建议为安卓虚拟机保留2G内存-随时检查内存情况-避免浪费自己的时间
假如内存不够那么虚拟机会莫名其妙crash而没有任何信息

(再次链接)蒟蒻独家高效清理硬盘提示

第七步

前半部分都是在用肺说话,告诉你用第三方包要先import,诶咋炸了鸭?哦原来系没install哦(。。。)
但是我们不能炸用户的电脑啊,于是我们请briefcase帮 我们先install。打开helloworld/pyproject.toml,找到requires = []中括号里加入以下格式的包名一个一行

requires = [
    "包名>=版本",
    "包名==版本",
    "git+https://github.com/encode/httpx"
]

编辑好后运行以下即可

briefcase update -d
注意-部分包含二进制库文件的包是不能够放进apk的如numpy-因为安卓系统本质上是java解释执行-你给他已经编译好的东西他反而没办法
据说华为和他的方舟编译器解决了这一问题-让我们拭目以待叭
第七步

让他变得siiiiii滑
用人话来说就是将同步加载换成异步加载(好吧好像也不是人话)
使用python并成功到达这一步的同学很幸运,我在AndroidStudio搞EventLoop搞得晕死

知识补充-EventLoop是一种机制-也是个变量\n一般我们将耗时任务交给后台处理使前台能响应用户操作时-EventLoop就能发挥前后台信息传递作用

那么python中咋搞嘞

async def say_hello(self, widget):#加入了关键字async
    if self.name_input.value:
        name = self.name_input.value
    else:
        name = 'stranger'

    async with httpx.AsyncClient() as client:#加入了async with关键字和AsyncClient方法
        response = await client.get("https://jsonplaceholder.typicode.com/posts/42")#通过awaitclient获得结果,这样子你可以当response里面已经有结果了,虽然实际运行时里面并没有

    payload = response.json()

    self.main_window.info_dialog(
        "Hello, {}".format(name),
        payload["body"],
    )
第八九十步

更换你的图标,公布在网上,然后发布(作者说:待更)hhhhhhhg那我也待更好吗
链接其他选项
链接toga控件

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值