七个Python必备的GUI库,这次一定要学会!

1. 简介

Python的GUI库很多,不同的GUI库适用于不同的场景,不同的需求。本文整理了七个常用的Python GUI库,帮助读者快速了解和选择适合自己的GUI库。

2. tkinter

2.1 简介

Tkinter是Python自带的GUI库,适用于小型的GUI应用程序开发。Tkinter基于Tk GUI工具包,跨平台性良好,易于学习和使用。Tkinter风格简单,但在UI设计上有些局限性。

2.2 示例:

import tkinter as tk

from tkinter import messagebox

def show_message():

messagebox.showinfo("Message", "Hello World!")

root = tk.Tk()

btn = tk.Button(root, text="Click Here", command=show_message)

btn.pack()

root.mainloop()

2.3 备注

Tkinter适合初学者入门,在GUI程序开发过程中可以用于快速搭建界面。

3. PyQt5

3.1 简介

PyQt5是Python中最为流行的GUI库之一,基于Qt GUI开发框架,拥有丰富的控件和功能,跨平台性良好,可用于开发各种规模的GUI程序,但需要C ++认知。

3.2 示例:

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel

class MyWindow(QMainWindow):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setGeometry(300, 300, 300, 300)

self.setWindowTitle('PyQt5 Example')

lbl = QLabel(self)

lbl.setText("Hello World!")

lbl.move(100, 50)

btn = QPushButton(self)

btn.setText("Click Here")

btn.clicked.connect(self.show_message)

btn.move(100, 100)

def show_message(self):

QMessageBox.information(self, "Message", "Hello World!")

if __name__ == '__main__':

app = QApplication(sys.argv)

window = MyWindow()

window.show()

sys.exit(app.exec_())

3.3 备注

PyQt5适合开发高级别的GUI应用,使用Python语言开发的广泛,底层采用C ++实现,开发过程中可结合Qt Designer进行可视化设计,可以大大提高开发效率。

4. wxPython

4.1 简介

wxPython是Python的另一个GUI库,基于C ++的wxWidgets开发框架,支持跨平台开发,使用网格布局和消息事件等。wxPython适合于开发大型的GUI程序,不过API相对较为复杂,学习曲线较陡峭。

4.2 示例:

import wx

class MyFrame(wx.Frame):

def __init__(self, parent, title):

super(MyFrame, self).__init__(parent, title=title, size=(300, 200))

panel = wx.Panel(self)

hbox = wx.BoxSizer(wx.HORIZONTAL)

self.btn1 = wx.Button(panel, label='OK')

self.btn2 = wx.Button(panel, label='Cancel')

hbox.Add(self.btn1, 1, wx.ALL, 10)

hbox.Add(self.btn2, 1, wx.ALL, 10)

vbox = wx.BoxSizer(wx.VERTICAL)

vbox.Add(hbox, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL)

panel.SetSizer(vbox)

self.Centre()

self.Show(True)

if __name__ == '__main__':

app = wx.App()

frame = MyFrame(None, title='wxPython Example')

app.MainLoop()

4.3 备注

wxPython是一个功能强大的GUI库,适合有一定编程经验的开发者,可用于创建各种类型的GUI应用程序。

5. PySide

5.1 简介

PySide是Qt公司推出的Python GUI库,与Qt框架的绑定比PyQt更为紧密,也具有与Qt类似的功能。PySide具有丰富的控件库、自定义样式和贴图、动态效果等,但因为未开源,尚未得到广泛使用。

5.2 示例:

import sys

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel

class MyWindow(QMainWindow):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setGeometry(300, 300, 300, 300)

self.setWindowTitle('PySide Example')

lbl = QLabel(self)

lbl.setText("Hello World!")

lbl.move(100, 50)

btn = QPushButton(self)

btn.setText("Click Here")

btn.clicked.connect(self.show_message)

btn.move(100, 100)

def show_message(self):

QMessageBox.information(self, "Message", "Hello World!")

if __name__ == '__main__':

app = QApplication(sys.argv)

window = MyWindow()

window.show()

sys.exit(app.exec_())

5.3 备注

PySide适合开发商业级的GUI应用,因为它是Qt公司推出的Python库,开发者可在商业应用中使用PySide。

6. Kivy

6.1 简介

Kivy是一个开源的Python GUI库,用于创建跨平台的GUI应用程序,可以在Windows、Linux、Mac OS X、Android等多个平台上运行。Kivy具有简单易用的UI元素、多点触摸和手势支持以及丰富的API和文档,可用于开发高度定制的GUI应用程序。

6.2 示例:

import kivy

kivy.require('1.11.1')

from kivy.app import App

from kivy.uix.label import Label

from kivy.uix.button import Button

from kivy.uix.boxlayout import BoxLayout

class MyWidget(BoxLayout):

def __init__(self, **kwargs):

super(MyWidget, self).__init__(**kwargs)

self.orientation = 'vertical'

self.lbl = Label(text='Hello World!')

self.btn = Button(text='Click Here', on_press=self.show_message)

self.add_widget(self.lbl)

self.add_widget(self.btn)

def show_message(self, instance):

print('Hello World!')

class MyApp(App):

def build(self):

return MyWidget()

if __name__ == '__main__':

MyApp().run()

6.3 备注

Kivy适合开发高度定制的GUI应用程序,因为它内置了丰富的UI元素与效果的API,同时支持多点触摸和手势效果,用户可自行设计GUI应用程序。

7. PyGTK

7.1 简介

PyGTK是Python GTK +绑定的一部分,用于创建Linux GTK GUI应用程序。PyGTK具有跨平台性和典型的C风格API,但不支持GTK 3。

7.2 示例:

import gtk

class PyApp(gtk.Window):

def __init__(self):

super(PyApp, self).__init__()

self.set_title('PyGTK Example')

self.set_default_size(300, 200)

self.set_position(gtk.WIN_POS_CENTER)

btn = gtk.Button("Click Here")

btn.connect("clicked", self.show_message)

self.add(btn)

self.show_all()

def show_message(self, widget):

dialog = gtk.MessageDialog(self, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Hello World!")

dialog.run()

dialog.destroy()

PyApp()

gtk.main()

7.3 备注

PyGTK适合Linux平台GUI应用程序开发,也可用于多平台的开发,但是不支持GTK 3版本。

总结

以上七个GUI库各有特色,适用于不同的场景和需求。初学者可选择Tkinter快速入门;有C ++基础的开发者可选择PyQt5或wxPython;希望开发商业级GUI应用程序的开发者则可选择PySide;需要自定义界面实现的开发者可选择Kivy,最后,如果是开发Linux GUI应用程序,可选择PyGTK。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签