下面我给您详细讲解如何使用8款常用的Python GUI图形界面开发框架。
1. Tkinter
Tkinter 是 Python 的标准 GUI 库,因此不需要安装任何其他的包就可以使用。Tkinter 提供了一个简单的方式创建基本的 GUI 应用程序,它包括了一系列的控件,如文本框、按钮、标签和列表框等。
以下是一个简单的 Tkinter 示例程序,在屏幕上显示一个标签和一个按钮:
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello World!")
label.pack()
button = tk.Button(root, text="Quit", command=root.quit)
button.pack()
root.mainloop()
2. PyQT
PyQt5 是开源的 GUI 库,它基于 C++ GUI 库 Qt,并提供了 Python 绑定。PyQt5 可以创建支持多种操作系统的图形用户界面应用程序。
下面是一个简单的 PyQT 示例程序:
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(100, 100, 200, 100)
label = QLabel(window, text="Hello World!")
label.move(70, 20)
button = QPushButton(window, text="Quit", command=app.quit)
button.move(70, 50)
window.show()
sys.exit(app.exec_())
3. Kivy
Kivy 是一个免费开源的 Python 库,用于快速创建各种多点触控应用程序。它支持 Windows、Linux、Mac、Android 和 iOS 等操作系统。
以下是一个简单的 Kivy 示例程序:
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical')
label = Label(text='Hello World!')
layout.add_widget(label)
button = Button(text='Quit', size_hint=(0.5, 0.2), pos_hint={'x':0.25, 'y':0.4})
button.bind(on_press=self.quit)
layout.add_widget(button)
return layout
def quit(self, instance):
self.stop()
if __name__ == '__main__':
MyApp().run()
4. wxPython
wxPython 是一个跨平台的 GUI 库,它基于 C++ GUI 库 wxWidgets,并提供了 Python 绑定。wxPython 可以创建支持多种操作系统的图形用户界面应用程序。
以下是一个简单的 wxPython 示例程序:
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, title):
super().__init__(parent, title=title, size=(200, 100))
panel = wx.Panel(self)
label = wx.StaticText(panel, label="Hello World!", pos=(55, 10))
button = wx.Button(panel, label="Quit", pos=(55, 50))
button.Bind(wx.EVT_BUTTON, self.on_quit)
self.Center()
self.Show()
def on_quit(self, event):
self.Close()
if __name__ == '__main__':
app = wx.App()
MyFrame(None, title='My App')
app.MainLoop()
5. PyGTK
PyGTK 是一个用于创建基于 GTK+ 库的 GUI 应用程序的 Python 模块。它提供了大量的控件和布局管理器。
以下是一个简单的 PyGTK 示例程序:
import pygtk
pygtk.require('2.0')
import gtk
class MyWindow:
def __init__(self):
self.window = gtk.Window()
self.window.set_size_request(200, 100)
self.window.connect("delete_event", gtk.main_quit)
self.label = gtk.Label("Hello World!")
self.button = gtk.Button("Quit")
self.button.connect("clicked", gtk.main_quit)
self.window.add(self.label)
self.window.add(self.button)
self.window.show_all()
if __name__ == '__main__':
MyWindow()
gtk.main()
6. PySide
PySide 是一个在 LGPL 许可下发布的 Python 模块,它提供了与 Qt 库的绑定。PySide 可以创建支持多种操作系统的图形用户界面应用程序。
以下是一个简单的 PySide 示例程序:
import sys
from PySide.QtGui import QApplication, QLabel, QWidget, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(100, 100, 200, 100)
label = QLabel(window, text="Hello World!")
label.move(70, 20)
button = QPushButton(window, text="Quit", command=app.quit)
button.move(70, 50)
window.show()
sys.exit(app.exec_())
7. PyForms
PyForms 是一个简单的 Python 库,用于创建基于 PyQt 库的 GUI 应用程序。它具有简单的语法和易于使用的 API。
以下是一个简单的 PyForms 示例程序:
from pyforms.basewidget import BaseWidget
from pyforms.controls import ControlLabel, ControlButton
class MyWidget(BaseWidget):
def __init__(self):
super().__init__('My Widget')
self.label = ControlLabel('Hello World!')
self.button = ControlButton('Quit')
self.button.value = self.quit
self.formset = [
(' ', self.label, ' '),
(' ', self.button, ' ')
]
def quit(self):
self.close()
if __name__ == '__main__':
MyWidget().run()
8. PySimpleGUI
PySimpleGUI 是一个易于使用的 Python 库,用于创建基于 Tkinter、Qt、wxPython 和 Pygame 等 GUI 库的应用程序。它使用了简单的语法和易于使用的 API。
以下是一个简单的 PySimpleGUI 示例程序:
import PySimpleGUI as sg
layout = [[sg.Text('Hello World!')],
[sg.Button('Quit')]]
window = sg.Window('My App', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Quit':
break
window.close()
以上是8款常用的 Python GUI 图形界面开发框架的详细攻略,并且每个框架均附带示例程序供您参考。希望能够帮助您更好地选择适合自己的框架,并使 GUI 应用程序的开发更加轻松。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:推荐8款常用的Python GUI图形界面开发框架 - Python技术站