我们已准备好创建我们的第一个应用程序。
安装 BeeWare 工具
首先,我们需要安装公文包。Briefcase 是一个 BeeWare 工具,可用于打包您的应用程序以分发给最终用户 - 但它也可用于引导新项目。确保您 位于教程 0beeware-tutorial中创建的目录中,并激活了虚拟环境,然后运行:beeware-venv
苹果系统
(beeware-venv) $ python -m pip install briefcase
Linux
(beeware-venv) $ python -m pip install briefcase
安装过程中可能出现的错误
如果您在安装过程中看到错误,几乎可以肯定是因为某些系统要求尚未安装。确保您已安装所有平台必备组件。
windows
(beeware-venv)C:\...>python -m pip install briefcase
BeeWare 工具之一是公文包。公文包可用于打包您的应用程序以分发给最终用户 - 但它也可用于引导新项目。
引导一个新项目
让我们开始我们的第一个 BeeWare 项目!我们将使用 Briefcase new命令创建一个名为Hello World的应用程序。从命令提示符运行以下命令:
苹果系统
(beeware-venv) $ briefcase new
Linux
(beeware-venv) $ briefcase new
windows
(beeware-venv) C:\...>briefcase new
公文包会询问我们新申请的一些细节。出于本教程的目的,请使用以下内容:
-----这里的代码的中文解释,实际是英文代码。
正式名称- 接受默认值:.Hello World
应用名称- 接受默认值:helloworld.
Bundle - 如果您拥有自己的域,请以相反的顺序输入该域。(例如,如果您拥有域“cupcakes.com”,请com.cupcakes 作为捆绑输入)。如果您不拥有自己的域,请接受默认捆绑包 ( com.example)。
项目名称- 接受默认值:.Hello World
说明- 接受默认值(或者,如果您想真正有创意,请提出您自己的说明!)
作者- 在此处输入您自己的姓名。
作者的电子邮件- 输入您自己的电子邮件地址。这将用于配置文件、帮助文本以及将应用程序提交到应用商店时需要电子邮件的任何地方。
URL - 您的应用程序的登录页面的 URL。同样,如果您拥有自己的域,请输入该域的 URL(包括https://)。否则,只需接受默认 URL ( https://example.com/helloworld)。这个 URL 不需要实际存在(现在);仅当您将应用程序发布到应用商店时才会使用它。
许可证- 接受默认许可证 (BSD)。不过,这不会影响本教程的操作 - 因此,如果您对许可证选择有特别强烈的感觉,请随意选择另一个许可证。
GUI 框架- 接受默认选项 Toga(BeeWare 自己的 GUI 工具包)。
公文包将生成一个项目框架供您使用。如果到目前为止您已经按照本教程进行操作,并且接受了所描述的默认值,那么您的文件系统应该类似于:
beeware-tutorial/
beeware-venv/
...
helloworld/
LICENSE
README.rst
pyproject.toml
src/
helloworld/
resources/
helloworld.icns
helloworld.ico
helloworld.png
__init__.py
__main__.py
app.py
这个骨架实际上是一个功能齐全的应用程序,没有添加任何其他内容。该src文件夹包含应用程序的所有代码,该pyproject.toml文件描述了如何打包应用程序以进行分发。如果您pyproject.toml在编辑器中打开,您将看到刚刚提供给公文包的配置详细信息。
现在我们有了一个存根应用程序,我们可以使用公文包来运行该应用程序。
以开发者模式运行应用程序
进入helloworld项目目录并告诉公文包以开发人员(或dev)模式启动项目:
苹果系统
(beeware-venv) $ cd helloworld
(beeware-venv) $ briefcase dev
[hello-world] Installing dependencies...
...
[helloworld] Starting in dev mode...
Linux
(beeware-venv) $ cd helloworld
(beeware-venv) $ briefcase dev
[hello-world] Installing dependencies...
...
[helloworld] Starting in dev mode...
windows
(beeware-venv) C:\...>cd helloworld
(beeware-venv) C:\...>briefcase dev
[hello-world] Installing dependencies...
...
[helloworld] Starting in dev mode...
如果您使用的是更新版本的 Python (3.9+),则此步骤可能会在安装依赖项时引发错误。这通常表现为:
Traceback (most recent call last):
File "", line 1, in
File "C:\...\Local\Temp\pip-install-ytuu_37_\pythonnet\setup.py", line 18, in
from wheel import bdist_wheel
ModuleNotFoundError: No module named 'wheel'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
根据您的环境的具体情况,它还可能表现为包含以下内容的报告:
Building wheel for pythonnet (setup.py) ... error
ERROR: Command errored out with exit status 1:
...
File "c:\...\Local\Programs\Python\Python38\lib\subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['...\\python.exe', 'tools\\geninterop\\geninterop.py', 'src\\runtime\\interop38.cs']' returned non-zero exit status 1.
----------------------------------------
ERROR: Failed building wheel for pythonnet
Running setup.py clean for pythonnet
Failed to build pythonnet
这是因为教程应用程序依赖Python for .NET包来访问 Windows 上的系统库。Python for .NET 不是纯 Python 包 - 它包含需要编译的 C# 模块。Python for .NET 团队发布了这些模块的预编译版本,但在支持更新的 Python 版本时有时会落后。
如果您收到此错误,您有四个选择:
使用旧版本的 Python。检查PyPI 上的 pythonnet 条目以查看 Python for .NET 当前支持的 Python 版本。
为 .NET 安装 Python 的预发布版本。目前处于 alpha 测试阶段的 3.0 版本是一个纯 Python 包,只需要在您的计算机上安装.NET 5 SDK 。不幸的是,这个选项没有很好的记录。有关详细信息,请参阅 Python 以获取 .NET 支持渠道。
配置您的环境以支持为 .NET 编译 Python。这是一个中等复杂的过程,需要您拥有 Visual Studio。有关详细信息,请参阅Python for .NET wiki。
安装一个非官方编译的轮子。Python for .NET 团队建议将此轮子集合作为可能的来源。.whl文件可以 用; 然后你应该能够重新运行.python -m pip install somefile.whlpython -m pip install --pre beeware
这应该会打开一个 GUI 窗口:
按下关闭按钮(或从应用程序菜单中选择退出),您就完成了!恭喜 - 你刚刚用 Python 编写了一个独立的原生应用程序!
下一步
我们现在有一个工作应用程序,在开发人员模式下运行。现在我们可以添加一些我们自己的逻辑来让我们的应用程序做一些更有趣的事情。在下一篇《4,Beeware开发小部件toga之Button》中,我们将在开始对toga的小部件进行实例练习,学习怎样在beeware内进行开发应用。