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