关于用户界面:如何使用Python创建可直接执行的跨平台GUI应用程序?

How can I create a directly-executable cross-platform GUI app using Python?

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

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


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

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

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

  • Tkinter - 基于Tk GUI工具包(事实上的python标准GUI库,免费用于商业项目)
  • WxPython - 基于WxWidgets(流行,免费用于商业项目)
  • Qt使用PyQt绑定或Qt用于Python。前者不适用于商业项目。后者不太成熟,但可以免费使用。

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

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

  • PyInstaller - 最活跃的
  • fbs - 如果你选择Qt以上

单个可执行文件(Windows)

  • py2exe - 曾经是最受欢迎的

单个可执行文件(Linux)

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

单个可执行文件(Mac)

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

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

http://www.pyinstaller.org/

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


py2exe的另一个工具是bbfreeze,它为windows和linux生成可执行文件。它比py2exe更新,可以很好地处理鸡蛋。我发现如果没有配置适用于各种各样的应用程序,它会神奇地工作。


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


由于现在默认情况下几乎每个非Windows操作系统都安装了python,因此您唯一需要确保的是安装了所有非标准库。

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

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


对于GUI本身:

PyQT几乎是参考。

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

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


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


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

您可以使用在tkinter中找到的所有相同小部件(滑块,复选框,单选按钮等)制作自定义GUI。代码往往非常紧凑和可读。

1
2
3
4
5
6
7
8
9
10
11
12
#!/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()

Image created from posted PySimpleGUI code

如PySimpleGUI文档中所述,要构建运行的.EXE文件:

pyinstaller -wF MyGUIProgram.py


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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 ...对于苹果os,没有必要我认为,一个可执行文件,因为它带有python而不需要安装它。

创建此文件

1)创建setup.py

使用此代码:

1
2
3
4
from distutils.core import setup
import py2exe

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

将其保存在文件夹中

2)将您的程序放在setup.py的同一文件夹中
在此文件夹中放入您想要使其可分发的程序:
es:l4h.py

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

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

Pyinstaller

从cmd安装它

**

pip install pyinstaller

**

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

**

pyinstaller file.py

**


您不需要为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


您可以使用appJar进行基本的GUI开发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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进行安装。


推荐阅读