📜  面向开发人员的 10 大Python GUI 框架(1)

📅  最后修改于: 2023-12-03 15:42:26.697000             🧑  作者: Mango

面向开发人员的 10 大Python GUI 框架

Python是一个支持多种编程范式的开源高级编程语言,它具有简洁、明了的语法,适用于快速开发,特别适合人工智能、自然语言处理和数据分析等领域。

本文将介绍10大开源Python GUI框架,旨在帮助开发人员选择适合自己的GUI框架。

1. PyQt

PyQt是基于Qt框架的Python绑定库,它可以实现丰富的GUI应用程序,提供了对Qt框架的全部支持。由于其良好的跨平台特性,它广泛应用于各个领域。

# PyQt 的 Hello World
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'Hello, PyQt5!'
        self.left = 10
        self.top = 10
        self.width = 500
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        label = QLabel('Hello, PyQt5!', self)
        label.move(150, 80)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
2. Tkinter

Tkinter是Python标准库中自带的GUI工具包,极其容易学习和使用,可以在多个平台上运行。Tkinter提供了多种控件类型和布局管理器,可以用于创建窗体、对话框和菜单等应用程序。

# Tkinter 的 Hello World
import tkinter as tk

class App(tk.Frame):

    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.hi_there = tk.Button(self)
        self.hi_there['text'] = 'Hello, Tkinter!'
        self.hi_there['command'] = self.say_hi
        self.hi_there.pack(side='top')

    def say_hi(self):
        print('Hi there, everyone!')

root = tk.Tk()
app = App(master=root)
app.mainloop()
3. Kivy

Kivy是一个跨平台的GUI框架,主要用于快速开发iOS、Android、Linux、OS X和Windows等平台的应用程序。它提供了许多高级功能,包括2D、3D图像渲染、多点触控、自定义控件和动态更新等功能。

# Kivy 的 Hello World
import kivy
kivy.require('1.11.1')

from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):

    def build(self):
        return Label(text='Hello, Kivy!')

if __name__ == '__main__':
    MyApp().run()
4. PyForms

PyForms是一个基于Qt框架的Python GUI框架,旨在为开发人员提供快速、简单和可扩展的开发体验。它提供了许多内置的控件、表单和工具,可以轻松构建引人注目的界面。

# PyForms 的 Hello World
from pyforms.basewidget import BaseWidget
from pyforms.controls import ControlText
from pyforms.controls import ControlButton

class HelloWorld(BaseWidget):

    def __init__(self):
        super().__init__('Hello, PyForms!')
        self.name = ControlText('Name')
        self.button = ControlButton('Say hello')
        self.button.value = self.say_hello

    def say_hello(self):
        print(f'Hello, {self.name.value}!')

if __name__ == '__main__':
    HelloWorld().run()
5. wxPython

wxPython是一个基于wxWidgets库的Python GUI框架,可以快速创建跨平台GUI应用程序。它提供了各种控件、菜单和窗体,并支持图形化布局管理器,支持多线程、数据库和网络编程等特性。

# wxPython 的 Hello World
import wx

class MyFrame(wx.Frame):

    def __init__(self):
        super().__init__(None, title='Hello, wxPython!', size=(300, 200))
        panel = wx.Panel(self)
        sizer = wx.BoxSizer(wx.VERTICAL)
        label = wx.StaticText(panel, label='Hello, wxPython!')
        sizer.Add(label, 0, wx.CENTER|wx.TOP, 50)
        button = wx.Button(panel, label='Say hello')
        sizer.Add(button, 0, wx.CENTER|wx.TOP, 20)
        panel.SetSizer(sizer)

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    frame.Show(True)
    app.MainLoop()
6. PyGTK

PyGTK是一个基于GTK+图形界面工具包的Python GUI框架,拥有成熟的UI工具、布局器和底层构件。它也能获得跨平台的特性,适用于多种linux环境。

# PyGTK 的 Hello World
import pygtk
pygtk.require('2.0')
import gtk

class HelloWorld:

    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_title('Hello, PyGTK!')
        window.set_default_size(200, 100)
        label = gtk.Label('Hello, PyGTK!')
        window.add(label)
        window.show_all()

    def main(self):
        gtk.main()

if __name__ == '__main__':
    hello = HelloWorld()
    hello.main()
7. PySide

PySide是一个基于Qt框架的Python GUI框架,由Qt公司支持和维护。它提供多种控件、组件和布局管理器,并支持Qt Designer设计工具,可帮助开发人员快速创建基于Qt的GUI应用程序。

# PySide 的 Hello World
import sys
from PySide2.QtWidgets import QApplication, QLabel, QWidget

class HelloWorld(QWidget):

    def __init__(self):
        super().__init__()
        self.setWindowTitle('Hello, PySide!')
        label = QLabel('Hello, PySide!', self)
        label.move(50, 50)
        self.setGeometry(300, 300, 200, 100)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    hello = HelloWorld()
    sys.exit(app.exec_())
8. Enaml

Enaml是一个基于Python的、声明性的GUI编程框架,它支持使用类似于yaml和xml的语言编写GUI描述文件。它还提供动态界面、自定义部件和自适应布局等高级特性。

# Enaml 的 Hello World
from enaml.stdlib.imports import Window, Label

if __name__ == '__main__':
    with enaml.imports():
        from hello import HelloWorld
    hello = HelloWorld()
    hello.show()
9. PySide2

PySide2是Qt5框架的Python绑定,相对于PySide,PySide2更加稳定、完善和跨平台。它提供了QML、WebEngine和OpenGL等高级功能,可用于创建较复杂的GUI应用程序。

# PySide2 的 Hello World
import sys
from PySide2.QtWidgets import QApplication, QLabel, QWidget

class HelloWorld(QWidget):

    def __init__(self):
        super().__init__()
        self.setWindowTitle('Hello, PySide2!')
        label = QLabel('Hello, PySide2!', self)
        label.move(50, 50)
        self.setGeometry(300, 300, 200, 100)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    hello = HelloWorld()
    sys.exit(app.exec_())
10. PyGObject

PyGObject是一个基于GTK+图形界面工具包的Python GUI框架,它提供了Python的接口,并支持GObject、GIO和GDK等高级功能。它也能获得跨平台的特性,适用于多种linux环境。

# PyGObject 的 Hello World
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class HelloWorld(Gtk.Window):

    def __init__(self):
        super().__init__(title='Hello, PyGObject!')
        label = Gtk.Label(label='Hello, PyGObject!')
        self.add(label)

if __name__ == '__main__':
    win = HelloWorld()
    win.connect('destroy', Gtk.main_quit)
    win.show_all()
    Gtk.main()

本文简单介绍了10个Python GUI框架,它们各具特色,可根据项目需求和个人喜好选择使用。