在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
修复。