首页 文章

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

提问于
浏览
233

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

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

11 回答

  • 244

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

    Cross-platform GUI libraries with Python bindings (Windows, Linux, Mac)

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

    完整清单位于http://wiki.python.org/moin/GuiProgramming

    Single executable (all platforms)

    Single executable (Windows)

    • py2exe - 曾经是最受欢迎的

    Single executable (Linux)

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

    Single executable (Mac)

    • py2app - 再次,像py2exe一样工作,但针对的是Mac OS
  • 4

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

    http://www.pyinstaller.org/

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

  • 6

    py2exe的另一个工具是bbfreeze,它为windows和linux生成可执行文件 . 它已经发现它在没有配置的情况下可以更好地运行,适用于各种各样的应用程序 .

  • 11

    还有PyGTK,它基本上是Gnome Toolkit的Python包装器 . 我've found it easier to wrap my mind around than Tkinter, coming from pretty much no knowledge of GUI programming previously. It works pretty well and has some good tutorials. Unfortunately there isn'是一个Python 2.6 for Windows的安装程序,可能暂时不会 .

  • 50

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

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

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

  • 4

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

  • 2

    对于GUI本身:

    PyQT几乎是参考 .

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

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

  • 0
    # 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

    使用此代码:

    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

    **

  • 1

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

    对于跨平台工作的GUI库,Python的Tk/Tcl小部件库工作得非常好,我相信它是足够的跨平台 .

    Tkinter是Tk / Tcl的python接口

    从python项目网页:

    Tkinter不是Python唯一的GuiProgramming工具包 . 然而,它是最常用的一种,几乎是唯一一种可在Unix,Mac和Windows之间移植的产品

  • 1

    PySimpleGUI包装tkinter并在Python 3上运行和2.7 . 您可以使用在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()
    

    Image created from posted PySimpleGUI code

    正如PySimpleGUI Documentation中所述,到build the .EXE file你运行:

    pyinstaller -wF MyGUIProgram.py

  • 14

    您可以使用 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 从命令行进行安装 .

相关问题