298

Python 可以在多个平台上工作,并且可以用于桌面和 Web 应用程序,因此我得出结论,有一些方法可以将它编译成 Mac、Windows 和 Linux 的可执行文件。

问题是我不知道从哪里开始或如何用它编写 GUI,任何人都可以对此有所了解并指出正确的方向吗?

4

13 回答 13

303

首先,您将需要一些带有 Python 绑定的 GUI 库,然后(如果需要)一些将您的 Python 脚本转换为独立可执行文件的程序。

具有 Python 绑定的跨平台 GUI 库(Windows、Linux、Mac)

当然,有很多,但我在野外看到的最受欢迎的是:

完整列表位于http://wiki.python.org/moin/GuiProgramming

单个可执行文件(所有平台)

  • PyInstaller - 最活跃的(也可以与 一起使用PyQt
  • fbs - 如果您在上面选择 Qt

单个可执行文件 (Windows)

  • py2exe - 曾经是最流行的

单个可执行文件 (Linux)

  • Freeze - 工作方式与 py2exe 相同,但针对 Linux 平台

单个可执行文件 (Mac)

  • py2app - 同样,像 py2exe 一样工作,但针对 Mac OS
于 2008-08-05T22:34:25.397 回答
60

另一个系统(尚未在已接受的答案中提及)是 PyInstaller,它适用于我的 PyQt 项目,而 py2exe 却不能。我发现它更容易使用。

http://www.pyinstaller.org/

Pyinstaller 基于 Gordon McMillan 的 Python 安装程序。哪个不再可用。

于 2008-08-28T08:41:45.853 回答
15

py2exe 的替代工具是bbfreeze,它为 windows 和 linux 生成可执行文件。它比 py2exe 更新,并且可以很好地处理鸡蛋。我发现它神奇地工作得更好,无需为各种应用程序进行配置。

于 2008-08-15T11:56:02.663 回答
11

还有PyGTK,它基本上是 Gnome Toolkit 的 Python 包装器。我发现它比 Tkinter 更容易让我思考,因为以前几乎没有 GUI 编程知识。它工作得很好,并且有一些很好的教程。不幸的是,目前还没有适用于 Windows 的 Python 2.6 安装程序,而且可能暂时还没有。

于 2008-11-05T15:53:19.173 回答
6

由于现在几乎所有非 Windows 操作系统都默认安装了 python,因此您真正需要确保的唯一一件事是安装了您使用的所有非标准库。

话虽如此,可以构建包含 python 解释器和您使用的任何库的可执行文件。但是,这可能会创建一个大型可执行文件。

MacOS X 甚至在 Xcode IDE 中支持创建完整的独立 GUI 应用程序。这些可以由任何运行 OS X 的用户运行。

于 2008-08-06T00:29:36.897 回答
6

对于 GUI 本身:

PyQT几乎是参考。

开发快速用户界面的另一种方法是编写一个 Web 应用程序,让它在本地运行并在浏览器中显示该应用程序。

另外,如果您选择 lubos hasko 建议的 Tkinter 选项,您可能想尝试使用portablepy 让您的应用程序在没有Python 的Windows 环境中运行。

于 2008-08-19T09:45:44.420 回答
4

我不确定这是不是最好的方法,但是当我在 Windows 上部署 Ruby GUI 应用程序(不是 Python,但就 .exe 而言具有相同的“问题”)时,我只写了一个调用我的主脚本的 C# 中的简短启动器。它编译为可执行文件,然后我有一个应用程序可执行文件。

于 2008-08-15T12:00:37.193 回答
3

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

于 2018-10-09T12:30:07.693 回答
2
# 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 的同一文件夹中

ps:更改文件名(从l4h到你想要的任何东西,这是一个例子)

  1. 从该文件夹运行 cmd(在该文件夹上,右键单击 + shift 并选择在此处启动 cmd)
  2. 写在 cmd:>python setup.py py2exe
  3. 在 dist 文件夹中有你需要的所有文件
  4. 你可以压缩它并分发它

安装程序

从 cmd 安装

**

点安装 pyinstaller

**

从文件所在文件夹的 cmd 运行它

**

pyinstaller 文件.py

**

更新

阅读这篇文章,以正确的方式使用 pyinstaller 在 Windows 上制作一个 exe,并在其中包含一个文件和图像https://pythonprogramming.altervista.org/auto-py-to-exe-only-one-file-with-images-为我们的 python 应用程序/

于 2017-01-31T19:51:42.963 回答
2

!!!基维!!!

看到没有人提到基维,我很惊讶!!!

我曾经用 Tkinter 做过一个项目,虽然他们确实主张它改进了很多,但它仍然给我一种 windows 98 的感觉,所以我切换到了Kivy

如果有帮助,我一直在关注一个教程系列...

只是为了了解 kivy 的外观,请参阅此(我正在从事的项目):

我正在做的项目

而且我已经工作了不到一周!你问 Kivy 的好处?检查这个

我选择它的原因是它的外观以及它也可以在移动设备中使用。

于 2020-01-10T07:24:51.160 回答
1

你不需要为 Mac/Windows/Linux编译python。它是一种解释型语言,因此您只需在您选择的系统上安装 Python 解释器(它适用于所有三个平台)。

至于跨平台工作的GUI库,Python的Tk/Tcl小部件库工作得很好,我相信是足够跨平台的。

Tkinter是 Tk/Tcl 的 python 接口

从 python 项目网页:

Tkinter 不是 Python 的唯一 GuiProgramming 工具包。然而,它是最常用的一种,几乎是唯一一种可在 Unix、Mac 和 Windows 之间移植的

于 2008-08-05T22:40:17.473 回答
1

您可以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从命令行进行的。

于 2017-06-08T10:21:11.723 回答
1

你可以做三件事:

首先是找到一个可以将其代码作为独立应用程序(如 .exe 文件)启动的 GUI 设计器。我使用 MatDeck 的一个版本(对于使用 GUI 设计器的人,我推荐MD Python Designer),因为我相信(我使用另一个版本,所以我不太确定。)它允许我将代码转换为独立的应用程序并拥有它因此,无需在要运行该程序的每台 PC 上安装该软件。

第二个选项是部分绕过问题,将 GUI 作为网页启动。如果不是所有操作系统都可以使用它,这将为您提供最大的兼容性。再一次,您需要一个可以将其组件转换为 Web 兼容格式的 GUI 设计器,我已经做过一次并且我使用了相同版本的 MatDeck(Visionary Deck),我这次不推荐 MD Python Designer,因为我不知道它是否可以使用 Web 汇编将其 GUI 转换为网站,而我已经尝试和测试过 Visionary Deck。与所有事情一样,很可能还有其他软件,这只是我经常使用的一个,因为我经常研究数学和物理。

第三个选项也是绕过问题,但在 Tkinter 中执行,只需确保您有 Python IDE 或只是普通的旧 Python 并运行代码,这将启动 GUI。这是一个很好的解决方案,也许是最简单的,但我不会将其归类为最短或最好的。如果您只打算在几个操作系统和计算机之间切换,这可能是您最好的选择。

于 2021-04-10T13:56:11.187 回答