我如何使用Python创建一个可直接执行的跨平台GUI应用程序?

Python可以在多种平台上工作,可以用于桌面和Web应用程序,因此我总结说有一些方法可以将它编译为Mac,Windows和Linux的可执行文件。

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

0
额外 编辑
意见: 1

10 答案

由于默认情况下默认情况下python几乎安装在每个非Windows操作系统上,所以确实需要确保的是您所使用的所有非标准库都已安装。

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

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

0
额外

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

至于跨平台的GUI库,Python的 Tk / Tcl 小部件库运行良好,我相信是足够跨平台的。

Tkinter is the python interface to Tk/Tcl

从python项目网页:

Tkinter不是唯一的GuiProgramming   Python工具包。然而,它是   最常用的一个,差不多了   只有一个便携式之间   Unix,Mac和Windows
0
额外
为此,我了解了几种方法:您可能会使用批处理脚本编写安装程序或为目标系统编译安装程序,以便将需要的文件放在某个位置,并在过程中安装所需的库和运行时。
额外 作者 Justin Standard,
您的安装程序更有可能检查是否存在正确版本的Python,如果发现它,请使用该版本,否则请将Python作为安装过程的一部分进行安装。
额外 作者 Justin Standard,
那么,如何让安装包部署到只需要单步安装的系统上(例如,双击Windows中的单个安装包)?
额外 作者 Craig McQueen,
将Python作为自己安装的一部分安装会有点烦琐,因为您必须处理已经安装了错误版本的Python的可能性。您必须并排安装,以便您的应用程序可以访问新安装的Python版本,但任何现有的应用程序都继续使用旧版本的Python。 (即不会搞乱.py文件关联或PATH之类的东西)
额外 作者 Jonathan Hartley,
正确 - 但第二个选项'安装python作为安装过程的一部分',正是我所说的。由于我给出的理由,这会很烦琐。
额外 作者 Jonathan Hartley,
或者制作一个安装程序,它将安装与您需要的库捆绑在一起的Python发行版,例如Python(x,y)(仅适用于Windows和Linux)或Enthought Canopy Express(适用于Linux,Windows和MacOSX)。
额外 作者 gaborous,

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

0
额外
对于这些应用程序,我的用户都不是匿名的。我知道他们是否有运行时,如果他们没有,我可以为他们安装它。本主题中主要关注的是如何启动这些应用程序,而无需打开命令提示符并键入运行时的可执行文件,然后键入程序名称。
额外 作者 Brian Warshaw,
嗯,好,但如果Ruby运行时没有安装呢?
额外 作者 Kugel,
@Brian你见过 _why的技术,执行Shoes应用程序?这可能可以用非鞋子程序完成。
额外 作者 Adam Lassek,
# 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

与此代码:

从distutils.core导入设置 导入py2exe

设置(控制台= [ 'l4h.py'])

将其保存在一个文件夹中

2)把你的程序放在setup.py文件夹中 在这个文件夹中放入你想让它分发的程序: es:l4h.py

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

3) Run cmd from that folder (on the folder, right click + shift and choose start cmd here) 4) write in cmd:>python setup.py py2exe 5) in the dist folder there are all the files you need 6) you can zip it and distribute it

0
额外

另一个系统(在接受的答案中没有提到)是PyInstaller,它在py2exe不支持的情况下为我的PyQt项目工作。我发现它更易于使用。

http://www.pyinstaller.org/

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

0
额外
在这个答案写了3年多后,pyinstaller STILL不支持Python 3,也没有列入未来版本的路线图。我的意思是,AIX和Solaris支持比Python 3更有用吗?
额外 作者 Dave,
它现在支持Python 2.7和Python 3.3,3.4和3.5。
额外 作者 Katu,
现在也是3.6。
额外 作者 Rexcirus,

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

使用Python绑定(Windows,Linux,Mac)的跨平台GUI库

当然,这里有很多,但是我在野外看到的最流行的是:

  • Tkinter - based on Tk GUI toolkit (de-facto standard GUI library for python, free for commercial projects)
  • WxPython - based on WxWidgets (very popular, free for commercial projects)
  • PyQt - based on Qt (also very popular and more stable than WxWidgets but costly license for commercial projects)

Complete list is at http://wiki.python.org/moin/GuiProgramming

单个可执行文件(Windows)

  • py2exe - Probably the most popular out there (PyInstaller is also gaining in popularity)

单个可执行文件(Linux)

  • Freeze - works the same way like py2exe but targets Linux platform

单个可执行文件(Mac)

  • py2app - again, works like py2exe but targets Mac OS
0
额外
谈论Windows的pyinstaller,而不是py2exe。
额外 作者 changelog,
...这就是为什么你现在应该非常考虑使用 的 PySide LGPL。它也比PyQt4的Python 2 API更为Pythonic。
额外 作者 Chris Morgan,
值得注意的是,4.5 QT将在LGPL之下。
额外 作者 CTT,
...但PyQt仍然是GPL。
额外 作者 Nicholas Riley,
您也可以添加 cx_Freeze ,它是跨平台,维护和支持Python 3的。 X。
额外 作者 fbmd,
Platypus for Mac OS X也是一个选项。 sveinbjorn.org/platypus
额外 作者 svth,

py2exe的替代工具是 bbfreeze ,它可以为windows和linux生成可执行文件。它比py2exe更新,并处理鸡蛋相当好。我发现它在没有配置适用于各种应用程序的情况下可以更好地工作。

0
额外

对于GUI本身:

PyQT is pretty much the reference.

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

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

0
额外

还有 PyGTK ,它基本上是Gnome Toolkit的Python包装器。我发现,比Tkinter更容易把我的思想包围起来,几乎没有以前对GUI编程的知识。它工作得很好,并有一些很好的教程。不幸的是,目前还没有针对Windows 2.6的Python 2.6安装程序,可能暂时还没有。

0
额外

您可以使用 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

0
额外