小沐:戈戈,你知道春秋战国时期诸子百家的故事吗?那时候各种学派争鸣,真是思想繁荣的黄金时代啊!
戈戈:当然知道,儒家、道家、墨家、法家...各派学者各抒己见,形成了著名的"百家争鸣"。
小沐:听起来和我们现在选择Python界面开发框架有点像,每个框架都有自己的特点和适用场景。
戈戈:没错!虽然领域不同,但那种百花齐放、选择多样的感觉是一样的。今天我就给你介绍介绍Python界的"百家争鸣"——各种GUI框架!
小沐:太好了,我正想了解这个呢!

在Python的世界里,图形用户界面(GUI)开发是一个非常有趣的领域。通过GUI,我们可以将命令行程序转换为直观的窗口应用程序,让用户能够通过点击按钮、输入框等控件与程序进行交互。Python提供了丰富的界面开发库,让我们能够轻松创建各种桌面应用程序。
Tkinter是Python标准库中自带的GUI模块,无需额外安装即可使用。它是Python内置的图形界面库,继承自Tcl/Tk工具包。Tkinter的优势在于简单易学、代码量少,非常适合初学者入门GUI编程。如果你想快速创建一个简单的桌面应用,Tkinter是一个不错的选择。
https://docs.python.org/3/library/tkinter.html
命令行安装如下:
pip install tk
下面是一段python + Tkinter界面代码示例。
import tkinter as tk
from tkinter import ttk
# 创建主窗口
root = tk.Tk()
root.title("Tkinter 示例")
root.geometry("300x200")
# 创建标签
label = ttk.Label(root, text="欢迎使用 Tkinter!", font=("Arial", 14))
label.pack(pady=20)
# 创建按钮
defon_click():
label.config(text="按钮被点击了!")
button = ttk.Button(root, text="点击我", command=on_click)
button.pack(pady=10)
# 运行主循环
root.mainloop()
代码运行结果如下:

PyQt和PySide是基于Qt框架的Python绑定库。Qt是一个功能非常强大的跨平台GUI库,被广泛应用于桌面应用开发。使用PyQt/PySide,你可以创建出专业级别的桌面应用程序,拥有现代化的界面风格和丰富的控件。不过需要注意的是,PyQt和PySide 采用了不同的许可证,开发时需要注意版权问题。
https://doc.qt.io/qtforpython-6/ https://www.qt.io/zh-cn/qt-for-python
命令行安装如下:
pip install PyQt6
pip install PySide6
下面是一段python + PyQt界面代码示例,包含了QSS样式美化:
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget
from PyQt6.QtCore import Qt
classMainWindow(QMainWindow):
def__init__(self):
super().__init__()
self.setWindowTitle("PyQt6 示例")
self.setGeometry(100, 100, 300, 200)
# 创建中心部件和布局
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout()
central_widget.setLayout(layout)
# 创建标签
label = QLabel("欢迎使用 PyQt6!", self)
label.setStyleSheet("font-size: 14px;")
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
layout.addWidget(label)
# 创建按钮
button = QPushButton("点击我", self)
button.clicked.connect(self.on_click)
layout.addWidget(button)
# 添加QSS样式美化界面
self.setStyleSheet("""
QMainWindow {
background-color: #f0f0f0;
}
QLabel {
color: #333333;
font-weight: bold;
}
QPushButton {
background-color: #0078d7;
color: white;
border: none;
padding: 8px 16px;
border-radius: 4px;
font-size: 12px;
}
QPushButton:hover {
background-color: #005a9e;
}
QPushButton:pressed {
background-color: #004578;
}
""")
defon_click(self):
self.centralWidget().layout().itemAt(0).widget().setText("按钮被点击了!")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
代码运行结果如下:

wxPython是wxWidgets库的Python封装,也是一个跨平台的GUI开发框架。它的特点是在不同操作系统上都能呈现出原生风格的界面,让应用程序看起来就像是为该平台专门设计的。如果你希望你的应用在Windows、Mac和Linux上都能有native的视觉效果,wxPython值得考虑。
https://docs.wxpython.org/

命令行安装如下:
pip install wxpython
下面是一段python + wxPython界面代码示例:
import wx
# 创建应用程序对象
app = wx.App()
# 创建窗口
frame = wx.Frame(None, title="Hello wxPython", size=(300, 200))
panel = wx.Panel(frame)
text = wx.StaticText(panel, label="Hello, wxPython!", pos=(90, 80))
# 显示窗口
frame.Show()
app.MainLoop()
代码运行结果如下:

Dear PyGui是一个基于GPU加速的现代GUI库,专为游戏开发、数据可视化和实时应用程序设计。它的渲染速度非常快,界面风格现代简洁。如果你需要开发高性能的实时界面,或者正在制作游戏工具,Dear PyGui是一个很好的选择。
https://github.com/hoffstadt/DearPyGui

命令行安装如下:
pip install dearpygui
下面是一段python + Dear PyGui界面代码示例:
import dearpygui.dearpygui as dpg
defsave_callback():
print("Save Clicked")
# 创建上下文
dpg.create_context()
# 创建视口
dpg.create_viewport()
# 设置 Dear PyGui
dpg.setup_dearpygui()
# 创建窗口
with dpg.window(label="Example Window"):
dpg.add_text("Hello world")
dpg.add_button(label="Save", callback=save_callback)
dpg.add_input_text(label="string")
dpg.add_slider_float(label="float")
# 显示视口并运行
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
代码运行结果如下:

Kivy是一个专注于多点触控和移动应用的Python框架。虽然它也可以用于桌面开发,但真正的亮点在于跨平台移动应用开发。使用Kivy,你可以用Python代码同时为iOS、Android、Windows、Mac和Linux创建应用,真正实现"一次编写,多平台运行"的梦想。
https://kivy.org/

命令行安装如下:
pip install kivy
下面是一段python + kivy界面代码示例:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
classMyApp(App):
defbuild(self):
# 创建垂直布局
layout = BoxLayout(orientation='vertical', padding=20, spacing=10)
# 创建标签
label = Button(text="Welcome to Kivy!", size_hint_y=None, height=50, disabled=True)
layout.add_widget(label)
# 创建按钮
button = Button(text="Click Me", size_hint_y=None, height=50)
button.bind(on_press=self.on_button_press)
self.label = label # 保存引用
layout.add_widget(button)
return layout
defon_button_press(self, instance):
self.label.text = "Button Clicked!"
if __name__ == "__main__":
MyApp().run()
代码运行结果如下:

小沐:戈戈,谢谢你帮我介绍了Python界面开发的"百家争鸣"!这感觉就像回到了春秋战国时代,每个框架都有自己的"门派"和"绝技"。
戈戈:是的,无论是Tkinter这样的"儒家"——中规中矩、入门首选,还是PyQt这样的"法家"——功能强大、适合复杂应用,都是Python GUI世界的重要组成部分。
小沐:我会根据自己的需求,选择最合适的"门派"来学习,就如同选择一个最适合自己的"道"来修行。
戈戈:正是如此!选择好了就潜心修炼吧,编程之道重在实践。

如果您觉得这些文字有一点点用处,请给作者点个赞或关个注;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见:
1、微信公众号:杨小羊爱阅读
2、CSDN博客:爱看书的小沐