使用 Python 创建可直接执行的跨平台 GUI 应用程序

2025-01-03 08:41:00
admin
原创
32
摘要:问题描述:Python 可在多个平台上运行,并可用于桌面和 Web 应用程序,因此我得出结论,有某种方法可以将其编译成 Mac、Windows 和 Linux 的可执行文件。问题是我不知道从哪里开始或如何用它编写 GUI,有人可以对此有所启发并为我指明正确的方向吗?解决方案 1:首先,您需要一些带有 Pyth...

问题描述:

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 项目。我发现它更容易使用。

http://www.pyinstaller.org/

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 代码创建的图像

正如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,无需安装它。

创建此文件

  1. 创建一个setup.py


使用以下代码:

from distutils.core import setup
import py2exe

setup(console=['l4h.py'])

保存在文件夹中

  1. 将您的程序放在与 setup.py 相同的文件夹中,并将您想要使其可分发的程序放入此文件夹中:es: l4h.py

ps:更改文件的名称(从 l4h 更改为您想要的任何名称,这只是示例)

  1. 从该文件夹运行 cmd(在该文件夹中,右键单击 + shift 并选择在此处启动 cmd)

  2. 在cmd中写入:>python setup.py py2exe

  3. dist 文件夹中有您需要的所有文件

  4. 你可以压缩它并分发它

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()

运行时的 GUI

请参阅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,甚至可能更深入地了解它的工作原理。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   984  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   0  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   0  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   0  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用