在Ubuntu中配置Python GUI库的步骤
Ubuntu系统支持多种Python GUI库,涵盖标准库、第三方跨平台库及现代触摸应用库。以下是常见库的详细配置流程:
Tkinter是Python内置的轻量级GUI库,适合快速开发基础图形界面,无需额外安装第三方依赖(但需单独安装Python绑定)。
python3-tk
包(Ubuntu默认仓库提供):sudo apt update sudo apt install python3-tk
python3 -m tkinter
hello_tkinter.py
,实现带标签和按钮的简单窗口:import tkinter as tk def on_click(): label.config(text=f"Hello, {entry.get()}!") root = tk.Tk() root.title("Tkinter Demo") label = tk.Label(root, text="Enter your name:") label.pack(pady=10) entry = tk.Entry(root) entry.pack(pady=5) button = tk.Button(root, text="Greet", command=on_click) button.pack(pady=10) root.mainloop()
运行脚本:python3 hello_tkinter.py
。PyQt5/PyQt6基于Qt框架,提供丰富的组件(如表格、树形视图)和可视化工具(如Qt Designer),适合开发复杂桌面应用。
apt
安装(含开发工具)或pip
安装(最新版本):# 使用apt安装(推荐新手,自动处理依赖) sudo apt update sudo apt install python3-pyqt5 # PyQt5 sudo apt install qttools5-dev-tools # Qt Designer(可视化设计工具) # 或使用pip安装(最新版本) pip3 install pyqt5 # PyQt5 pip3 install pyqt6 # PyQt6
hello_pyqt5.py
,实现带标签的窗口:from PyQt5.QtWidgets import QApplication, QLabel, QWidget app = QApplication([]) window = QWidget() window.setWindowTitle("PyQt5 Demo") window.setGeometry(100, 100, 300, 200) label = QLabel("Hello, PyQt5!", parent=window) label.move(100, 80) window.show() app.exec_()
运行脚本:python3 hello_pyqt5.py
。Kivy支持多点触控,适合开发跨平台移动/桌面应用(如Android、iOS),需安装系统依赖和Python绑定。
pip
安装Kivy:sudo apt update sudo apt install -y python3-pip build-essential git python3-dev \ ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \ libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev pip3 install --upgrade pip # 升级pip pip3 install kivy
hello_kivy.py
,实现带标签的触摸友好窗口:from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text="Hello, Kivy!", font_size=24) if __name__ == "__main__": MyApp().run()
运行脚本:python3 hello_kivy.py
。wxPython使用本地系统控件,界面风格与操作系统一致,适合需要原生体验的应用。
apt
安装(含GTK绑定)或pip
安装(最新版本):# 使用apt安装(Ubuntu默认仓库提供) sudo apt update sudo apt install python3-wxgtk4.0 # 或使用pip安装(最新版本) pip3 install wxPython
hello_wxpython.py
,实现带标签的窗口:import wx app = wx.App(False) frame = wx.Frame(None, wx.ID_ANY, "wxPython Demo") panel = wx.Panel(frame, wx.ID_ANY) label = wx.StaticText(panel, wx.ID_ANY, "Hello, wxPython!", pos=(50, 50)) frame.Show(True) app.MainLoop()
运行脚本:python3 hello_wxpython.py
。GTK+3是Ubuntu桌面环境的默认GUI工具包,通过PyGObject
绑定使用,适合开发与系统风格一致的本地应用。
sudo apt update sudo apt install python3-gi gir1.2-gtk-3.0
hello_gtk.py
,实现带标签的窗口:import gi gi.require_version("Gtk", "3.0") # 指定GTK版本 from gi.repository import Gtk class MyWindow(Gtk.Window): def __init__(self): super().__init__(title="GTK+3 Demo") self.set_default_size(200, 100) label = Gtk.Label(label="Hello, GTK+3!") self.add(label) win = MyWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main()
运行脚本:python3 hello_gtk.py
。venv
创建虚拟环境,隔离项目依赖:python3 -m venv myenv source myenv/bin/activate
pip
为最新版本:pip3 install --upgrade pip
。sudo apt --fix-broken install
修复。