如何使用 Python 创建可直接执行的跨平台 GUI 应用程序?
-
08-06-2019 - |
题
Python 可在多个平台上运行,可用于桌面和 Web 应用程序,因此我得出的结论是,有某种方法可以将其编译为适用于 Mac、Windows 和 Linux 的可执行文件。
问题是我不知道从哪里开始或如何用它编写 GUI,任何人都可以阐明这一点并为我指出正确的方向吗?
解决方案
首先,您需要一些带有 Python 绑定的 GUI 库,然后(如果您愿意)需要一些程序,将您的 python 脚本转换为独立的可执行文件。
具有 Python 绑定的跨平台 GUI 库(Windows、Linux、Mac)
当然,有很多,但我在野外见过的最受欢迎的是:
- 特金特 - 基于 Tk 图形用户界面工具包 (事实上的Python标准GUI库,对于商业项目免费)
- WxPython - 基于 WxWidgets (流行,商业项目免费)
- Qt 使用 PyQt 绑定 或者 用于 Python 的 Qt. 。前者对于商业项目来说不是免费的。后者不太成熟,但可以免费使用。
完整列表位于 http://wiki.python.org/moin/GuiProgramming
单个可执行文件(所有平台)
单个可执行文件 (Windows)
- py2exe - 曾经是最受欢迎的
单个可执行文件 (Linux)
- 冻结 - 工作方式与 py2exe 相同,但针对 Linux 平台
单个可执行文件 (Mac)
- py2应用程序 - 同样,与 py2exe 一样工作,但针对 Mac OS
其他提示
另一个系统(在接受的答案中尚未提及)是 PyInstaller,它适用于我的 PyQt 项目,而 py2exe 则不起作用。我发现它更容易使用。
Pyinstaller 基于 Gordon McMillan 的 Python 安装程序。哪个不再可用。
py2exe 的替代工具是 BB冻结 它生成 Windows 和 Linux 的可执行文件。它比 py2exe 新,并且可以很好地处理鸡蛋。我发现它神奇地可以更好地工作,无需针对各种应用程序进行配置。
还有 PyGTK, ,它基本上是 Gnome 工具包的 Python 包装器。我发现它比 Tkinter 更容易理解,因为我之前对 GUI 编程几乎一无所知。它工作得很好并且有一些很好的教程。不幸的是,目前还没有适用于 Windows 的 Python 2.6 安装程序,并且可能暂时不会有。
由于现在几乎所有非 Windows 操作系统上都默认安装了 python,因此您真正需要确保的唯一一件事是安装了您使用的所有非标准库。
话虽如此,可以构建包含 python 解释器以及您使用的任何库的可执行文件。然而,这可能会创建一个大型可执行文件。
MacOS X 甚至在 Xcode IDE 中支持创建完整的独立 GUI 应用程序。这些可以由任何运行 OS X 的用户运行。
对于 GUI 本身:
皮QT 差不多就是参考了。
开发快速用户界面的另一种方法是编写Web应用程序,在本地运行并在浏览器中显示该应用程序。
另外,如果您选择Lubos Hasko建议的TKINTER选项,则可能需要尝试PortablePy以在没有Python的Windows环境上运行您的应用程序。
我不确定这是最好的方法,但是当我在 Windows 上部署 Ruby GUI 应用程序(不是 Python,但就 .exe 而言具有相同的“问题”)时,我只需编写一个C# 中的简短启动器调用我的主脚本。它编译为可执行文件,然后我就有了一个应用程序可执行文件。
# I'd use tkinter for python 3
import tkinter
tk = tkinter.Tk()
tk.geometry("400x300+500+300")
l = Label(tk,text="")
l.pack()
e = Entry(tk)
e.pack()
def click():
e['text'] = 'You clicked the button'
b = Button(tk,text="Click me",command=click)
b.pack()
tk.mainloop()
# After this I would you py2exe
# search for the use of this module on stakoverflow
# otherwise I could edit this to let you know how to do it
py2exe
那么你应该使用 py2exe,例如,将运行应用程序所需的所有文件引入一个文件夹,即使用户的电脑上没有 python(我说的是 Windows...我认为,对于苹果操作系统来说,不需要可执行文件,因为它附带了 python,无需安装它。
创建这个文件
1)创建setup.py
用这个代码:
from distutils.core import setup
import py2exe
setup(console=['l4h.py'])
将其保存在文件夹中
2)将您的程序放入相同的设置文件夹中。Py放入此文件夹中,您要使该程序可分配的程序:es:l4h.py
附:更改文件名(从 l4h 更改为您想要的任何名称,这就是一个示例)
3)从该文件夹运行cmd(在该文件夹上,右键单击+shift并选择在此处启动cmd)
4)在cmd中写入:>python setup.py py2exe
5)在dist文件夹中有你需要的所有文件
6)您可以将其压缩并分发
py安装程序
从cmd安装
**
pip 安装 pyinstaller
**
从文件所在的文件夹中的 cmd 运行它
**
pyinstaller 文件.py
**
PySimpleGUI 包装了 tkinter,并可在 Python 3 和 2.7 上运行。它还可以在 Qt、WxPython 和 Web 浏览器上运行,对所有平台使用相同的源代码。
您可以制作自定义 GUI,利用您在 tkinter 中找到的所有相同小部件(滑块、复选框、单选按钮等)。代码往往非常紧凑且可读。
#!/usr/bin/env python
import sys
if sys.version_info[0] >= 3:
import PySimpleGUI as sg
else:
import PySimpleGUI27 as sg
layout = [[ sg.Text('My Window') ],
[ sg.Button('OK')]]
window = sg.Window('My window').Layout(layout)
button, value = window.Read()
正如中所解释的 PySimpleGUI 文档, , 到 构建 .EXE 文件 你跑:
pyinstaller -wF MyGUIProgram.py
您可以使用 appJar
用于基本 GUI 开发。
from appJar import gui
num=1
def myfcn(btnName):
global num
num +=1
win.setLabel("mylabel", num)
win = gui('Test')
win.addButtons(["Set"], [myfcn])
win.addLabel("mylabel", "Press the Button")
win.go()
请参阅文档: 应用程序Jar站点.
安装是用 pip install appjar
从命令行。