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

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

问题是我不知道从哪里开始,或者如何用它来编写一个graphics用户界面,有没有人可以点亮这个,并指出我在正确的方向吗?

10 Solutions collect form web for “我如何使用Python创build一个可直接执行的跨平台GUI应用程序?”

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

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

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

  • Tkinter – 基于Tk GUI工具包 (实际上是针对python的标准GUI库,免费用于商业项目)
  • WxPython – 基于WxWidgets (非常stream行,免费用于商业项目)
  • PyQt – 基于Qt (也比WxWidgets更受欢迎,也更稳定,但是对于商业项目来说代价昂贵)

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

单个可执行文件(Windows)

  • py2exe – 可能是最受欢迎的( PyInstaller也越来越受欢迎)

单个可执行文件(Linux)

  • 冻结 – 像py2exe一样工作,但是以Linux平台为目标

单个可执行文件(Mac)

  • py2app – 再次,像py2exe的工作,但目标的Mac OS

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

http://www.pyinstaller.org/

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

py2exe的替代工具是bbfreeze ,它为windows和linux生成可执行文件。 它比py2exe更新,处理鸡蛋相当好。 我发现它神奇地工作更好,没有configuration为各种各样的应用程序。

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

由于python默认安装在几乎所有的非Windows操作系统上,所以你唯一需要确定的就是安装了所有的非标准库。

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

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

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

对于GUI本身:

PyQT是非常多的参考。

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

此外,如果您select由lubos hasko提供的Tkinter选项,则可能需要尝试使用portablepy将您的应用程序在没有Python的Windows环境下运行。

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

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

Tkinter是Tk / Tcl的Python接口

从python项目网页:

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

# 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 

您可以使用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进行pip install appjar

  • 构buildtkinter应用程序的最佳方式
  • 将GIF图像放在Tkinter的画布上
  • 使用Tkinter将窗口设置为固定大小
  • 将一个滚动条添加到Tkinter中的一组控件中
  • python pack()和grid()方法一起使用
  • 如何在Tkinter屏幕上放置一个窗口?
  • tkinter循环和串行写入
  • Tkinter分配按钮命令与lambda循环
  • 如何在Python中定期运行一个函数
  • 如何捆绑包括依赖关系的Python应用程序?
  • 如何更新matplotlib中的情节?