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

ut_et 发布于 2018-02-26 deployment 最后更新 2018-02-26 01:00 2189 浏览

Python可以在多种平台上工作,可以用于桌面和Web应用程序,因此我总结说有一些方法可以将它编译为Mac,Windows和Linux的可执行文件。 问题是我不知道从哪里开始,或者如何使用它编写GUI,任何人都可以点亮这一点并指出我正确的方向吗?

已邀请:

zamet

赞同来自:

首先,您需要一些带有Python绑定的GUI库,然后(如果您需要)一些将您的Python脚本转换为独立可执行文件的程序。 使用Python绑定(Windows,Linux,Mac)的跨平台GUI库 当然,这里有很多,但是我在野外看到的最流行的是:

  • Tkinter - 基于Tk GUI toolkit(事实上用于python的标准GUI库,免费用于商业项目)
  • WxPython - 基于WxWidgets(非常受欢迎,免费用于商业项目)
  • PyQt - 基于Qt(也非常流行,比WxWidgets更稳定,但对于商业项目而言代价昂贵)
  • 完整列表位于http://wiki.python.org/moin/GuiProgramming 单个可执行文件(Windows)
    • py2exe - 可能是最受欢迎的(PyInstaller也受欢迎)
    • 单个可执行文件(Linux)
      • Freeze - 与py2exe的工作方式相同,但以Linux平台为目标
      • 单个可执行文件(Mac)
        • py2app - 再次像py2exe一样工作,但以Mac OS为目标

xminus

赞同来自:

您无需为Mac/Windows/Linux 编译 python。它是一种解释型语言,因此您只需将Python解释器安装在您选择的系统上(它适用于所有三种平台)。 至于跨平台的GUI库,Python的Tk/Tcl小部件库工作得很好,而且我相信它足够跨平台。 Tkinter是Tk/Tcl的Python接口 从python项目网页:

Tkinter is not the only GuiProgramming toolkit for Python. It is however the most commonly used one, and almost the only one that is portable between Unix, Mac and Windows

vvelit

赞同来自:

由于默认情况下默认情况下python几乎安装在每个非Windows操作系统上,所以确实需要确保的是您所使用的所有非标准库都已安装。 话虽如此,可以构建包含python解释器的可执行文件以及您使用的任何库。但是,这很可能会创建一个大的可执行文件。 MacOS X甚至在Xcode IDE中支持创建完整的独立GUI应用程序。这些可以由运行OS X的任何用户运行。

oautem

赞同来自:

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

jculpa

赞同来自:

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

cvelit

赞同来自:

对于GUI本身: PyQT几乎是参考。 另一种开发快速用户界面的方法是编写一个Web应用程序, 让它在本地运行并在浏览器中显示应用程序。 此外,如果您选择由lubos hasko建议的Tkinter选项 您可能想尝试使用portablepy将您的应用程序在Windows环境中运行 没有Python。

dab

赞同来自:

另一个系统(在接受的答案中没有提到)是PyInstaller,它在py2exe不支持的情况下为我的PyQt项目工作。我发现它更易于使用。 http://www.pyinstaller.org/ Pyinstaller基于Gordon McMillan的Python安装程序。哪些不再可用。

cut

赞同来自:

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

psunt

赞同来自:

# 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

uin

赞同来自:

您可以使用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 when running 请参阅appJar site上的文档。 使用pip install appjar从命令行进行安装。