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

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

问题是我不知道从哪里开始或如何写一个GUI与它,谁能在这一点上提供一些光,并指出我在正确的方向请?

205738 次浏览

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

带有Python绑定的跨平台GUI库(Windows, Linux, Mac)

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

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

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

单个可执行文件(Windows)

  • py2exe -曾经是最流行的

单个可执行文件(Linux)

  • 冻结 -工作方式与py2exe相同,但目标是Linux平台

单个可执行文件(Mac)

  • py2app -同样像py2exe一样工作,但目标是Mac OS

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

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

Tkinter是Tk/Tcl的python接口

来自python项目网页:

Tkinter不是唯一的GuiProgramming Python工具包。然而 最常用的一种,几乎是 只有一个是可移植的 Unix, Mac和Windows

由于python现在默认安装在几乎所有非windows操作系统上,你真正需要确保的唯一一件事就是你使用的所有非标准库都已安装。

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

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

py2exe的另一个替代工具是bbfreeze,它为windows和linux生成可执行文件。它比py2exe更新,可以很好地处理鸡蛋。我发现,对于各种各样的应用程序,不需要配置它就能神奇地更好地工作。

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

对于GUI本身:

PyQT基本上是一个参考。

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

+,如果你选择lubos hasko建议的Tkinter选项 你可能想尝试portablepy让你的应用在Windows环境中运行 没有Python . < / p >

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

http://www.pyinstaller.org/

Pyinstaller基于Gordon McMillan的Python Installer。现在已经没有了。

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

# 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,例如,在一个文件夹中引入运行应用程序所需的所有文件,即使用户的pc上没有python(我说的是windows…对于苹果操作系统,我认为不需要可执行文件,因为它自带python,不需要安装。

创建这个文件

  1. 创建一个setup.py文件

下面的代码:

from distutils.core import setup
import py2exe


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

保存在一个文件夹中

    将你的程序放在setup.py的同一个文件夹中 在这个文件夹中放入你想要使其可分发的程序: 李es: l4h.py < / >

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

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

Pyinstaller

从cmd安装它

**

PIP安装pyinstaller

**

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

**

pyinstaller file.py

**

更新

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

你可以使用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网站文档。

从命令行使用pip install appjar进行安装。

PySimpleGUI包装了tkinter,适用于Python 3和2.7。它还可以在Qt、WxPython和web浏览器上运行,在所有平台上使用相同的源代码。

您可以使用在tkinter中找到的所有相同的小部件(滑块、复选框、单选按钮……)来创建自定义gui。代码往往非常紧凑且可读。

#!/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文件运行:

MyGUIProgram.py

! !KIVY ! !

我很惊讶没有人提到Kivy!!

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

我一直在遵循教程系列,如果它有帮助的话…

为了让大家了解kivy的样子,看看这个(我正在做的项目):

The Project that I am working on .

我才花了一个星期的时间! 你问Kivy的好处是什么?检查 < / p >

我选择它的原因是,它的外观和它也可以用于移动设备。

你可以做三件事:

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

第二种选择部分地绕过了这个问题,将GUI作为网页启动。这将为您提供最大的兼容性,因为大多数(如果不是所有)操作系统都可以使用它。再一次,你将需要一个GUI设计器,可以将其组件转换为web兼容的格式,我已经做过一次,我使用了相同版本的MatDeck(有远见的甲板),我不建议MD Python设计器这次,因为我不知道它是否可以将其GUI转换为使用web汇编的网站,而visiondeck我已经尝试和测试过。就像所有事情一样,很可能还有其他软件,这只是我经常使用的一个软件,因为我经常使用数学和物理。

第三种选择也可以绕过这个问题,但在Tkinter中进行,并确保您有一个Python IDE或只是普通的Python并运行代码,这将启动GUI。这是一个很好的解,可能是最简单的,但我不会把它归类为最短或最好的。如果你只打算在几个操作系统和电脑之间切换,这可能是你最好的选择。