使用 Python 创建可直接执行的跨平台 GUI 应用程序
- 2025-01-03 08:41:00
- admin 原创
- 33
问题描述:
Python 可在多个平台上运行,并可用于桌面和 Web 应用程序,因此我得出结论,有某种方法可以将其编译成 Mac、Windows 和 Linux 的可执行文件。
问题是我不知道从哪里开始或如何用它编写 GUI,有人可以对此有所启发并为我指明正确的方向吗?
解决方案 1:
首先,您需要一些带有 Python 绑定的 GUI 库,然后(如果您愿意)需要一些将您的 Python 脚本转换为独立可执行文件的程序。
具有 Python 绑定的跨平台 GUI 库(Windows、Linux、Mac)
当然有很多,但我在野外见过的最受欢迎的是:
Tkinter—— 基于Tk GUI工具包。
事实上,python 的标准 GUI 库,对商业项目免费。
WxPython——基于WxWidgets。
很受欢迎,并且可免费用于商业项目。
Qt使用PyQt 绑定或Qt for Python。
前者对于商业项目来说不是免费的,后者虽然不太成熟,但可以免费使用。
Qt 本身据称也支持
Android
并且iOS
,但通过它的绑定实现相同的功能应该很棘手。
用 Python 为 Python 编写的
Kivy (2023 年更新)。
据称
Android
也支持iOS
。
请注意, 的用户
WxWidgets
(因此是用户)通常也WxPython
需要使用,因为自己的 GUI 尚未达到 的级别(在撰写本文时)。WxQt
`WxWidgets`Qt
完整列表位于http://wiki.python.org/moin/GuiProgramming
独立/单一可执行文件
对于所有平台:
PyInstaller-最活跃的(也可以与一起使用
PyQt
)fbs - 如果您选择上面的 Qt(商业版,有免费计划)
对于 Windows:
py2exe - 曾经最流行
对于 Linux:
Freeze - 工作方式与 py2exe 相同,但针对 Linux 平台
对于 MacOS:
py2app - 同样,与 py2exe 类似,但针对的是 Mac OS
解决方案 2:
另一个系统(在接受的答案中尚未提及)是 PyInstaller,当 py2exe 不起作用时,它可以用于我的 PyQt 项目。我发现它更容易使用。
Pyinstaller 基于 Gordon McMillan 的 Python Installer。现已不再可用。
解决方案 3:
py2exe 的替代工具是bbfreeze,它可以为 windows 和 linux 生成可执行文件。它比 py2exe 更新,处理 egg 相当好。我发现它神奇地在无需配置的情况下为各种应用程序更好地工作。
解决方案 4:
还有PyGTK,它基本上是 Gnome Toolkit 的 Python 包装器。我发现它比 Tkinter 更容易理解,因为我以前几乎没有 GUI 编程知识。它运行良好,并且有一些很好的教程。不幸的是,目前还没有适用于 Windows 的 Python 2.6 安装程序,而且可能还要过一段时间才会有。
解决方案 5:
由于现在几乎每个非 Windows 操作系统上都默认安装了 python,因此您真正需要确保的唯一一件事是您使用的所有非标准库都已安装。
话虽如此,但可以构建包含 Python 解释器和您使用的任何库的可执行文件。然而,这可能会创建一个很大的可执行文件。
MacOS X 甚至在 Xcode IDE 中支持创建完整的独立 GUI 应用程序。任何运行 OS X 的用户都可以运行这些应用程序。
解决方案 6:
对于 GUI 本身:
PyQT几乎可以作为参考。
开发快速用户界面的另一种方法是编写一个 Web 应用程序,让它在本地运行并在浏览器中显示该应用程序。
另外,如果您选择 lubos hasko 建议的 Tkinter 选项,您可能想尝试 portablepy 让您的应用程序在没有 Python 的 Windows 环境上运行。
解决方案 7:
我不确定这是否是最好的方法,但是当我在 Windows 上部署 Ruby GUI 应用程序(不是 Python,但就 .exe 而言有同样的“问题”)时,我只需用 C# 编写一个简短的启动器来调用我的主脚本。它编译为可执行文件,然后我就有了一个应用程序可执行文件。
解决方案 8:
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
解决方案 9:
!!! 基维 !!!
我很惊讶地发现没有人提到 Kivy!!!
我曾经使用 Tkinter 做过一个项目,虽然他们确实宣称它已经有了很大的改进,但它仍然给我一种 Windows 98 的感觉,所以我改用了Kivy。
我一直在关注一系列教程,看它是否有帮助......
只是为了让大家了解 kivy 的样子,请看这个(我正在从事的项目):
而我到现在才刚工作了不到一周!你问 Kivy 有什么好处?看看这个
我选择它的原因是它的外观以及它也可以在移动设备上使用。
解决方案 10:
# 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,无需安装它。
创建此文件
创建一个setup.py
使用以下代码:
from distutils.core import setup
import py2exe
setup(console=['l4h.py'])
保存在文件夹中
将您的程序放在与 setup.py 相同的文件夹中,并将您想要使其可分发的程序放入此文件夹中:es: l4h.py
ps:更改文件的名称(从 l4h 更改为您想要的任何名称,这只是示例)
从该文件夹运行 cmd(在该文件夹中,右键单击 + shift 并选择在此处启动 cmd)
在cmd中写入:>python setup.py py2exe
dist 文件夹中有您需要的所有文件
你可以压缩它并分发它
Pyinstaller
从cmd安装
**
pip 安装 pyinstaller
**
从文件所在的文件夹的 cmd 运行它
**
py安装程序文件.py
**
更新
阅读这篇文章,以正确的方式使用 pyinstaller 在 Windows 上制作一个 exe,其中包含一个文件和图像https://pythonprogramming.altervista.org/auto-py-to-exe-only-one-file-with-images-for-our-python-apps/
解决方案 11:
您不需要为 Mac/Windows/Linux编译Python。它是一种解释型语言,因此您只需要在您选择的系统上安装 Python 解释器(它适用于所有三个平台)。
至于跨平台工作的 GUI 库,Python 的Tk/Tcl小部件库工作得很好,我相信它足够跨平台。
Tkinter是 Tk/Tcl 的 Python 接口
来自python项目网页:
Tkinter 不是 Python 的唯一 GuiProgramming 工具包。但它是最常用的工具包,并且几乎是唯一可在 Unix、Mac 和 Windows 之间移植的工具包。
解决方案 12:
您可以将其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()
请参阅appJar 网站上的文档。
安装是pip install appjar
通过命令行进行的。
解决方案 13:
你可以做三件事:
首先要找到一个可以将其代码作为独立应用程序(如 .exe 文件)启动的 GUI 设计器。我使用 MatDeck 的一个版本(对于使用 GUI 设计器的人,我推荐MD Python Designer),因为我相信(我使用另一个版本,所以我不太确定。)它允许我将代码转换为独立应用程序,这样就无需在每台要运行该程序的 PC 上安装该软件。
第二种选择是部分绕过该问题,将 GUI 作为网页启动。这将为您提供最大的兼容性,因为大多数(如果不是全部)操作系统都可以使用它。同样,您需要一个可以将其组件转换为 Web 兼容格式的 GUI 设计器,我曾经做过一次,我使用了相同版本的 MatDeck(Visionary Deck),这次我不推荐 MD Python 设计器,因为我不知道它是否可以使用 Web 汇编将其 GUI 转换为网站,而 Visionary Deck 我已经尝试并测试过了。与所有事物一样,很可能还有其他软件,这只是我经常使用的软件,因为我经常处理数学和物理。
第三个选项也是一种绕过问题的方法,但在 Tkinter 中执行,只需确保您有 Python IDE 或普通的 Python 并运行代码,这将启动 GUI。这是一个很好的解决方案,也许是最简单的,但我不会将其归类为最短或最好的。如果您只打算在几个操作系统和计算机之间切换,这可能是您的最佳选择。
解决方案 14:
您可以创建并编译一个执行 Python 脚本的 C++ 脚本。这比上述建议更难,但绝对值得研究,因为它会让您更加自信地重返 Python,甚至可能更深入地了解它的工作原理。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件