Ubuntu上Python图形界面创建指南
在Ubuntu上创建Python图形界面(GUI)可通过多种成熟库实现,以下是常用库的安装、基础示例及特点,覆盖从初学者到进阶的不同需求:
Tkinter是Python内置的GUI库,无需额外安装,适合快速开发简单桌面应用。
python3-tk包:sudo apt update && sudo apt install python3-tk
import tkinter as tk
def on_click():
label.config(text=f"Hello, {entry.get()}!")
root = tk.Tk()
root.title("Tkinter Demo")
root.geometry("300x200")
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()
PyQt5基于Qt框架,提供丰富的控件和可视化工具(如Qt Designer),适合开发复杂桌面应用(如IDE、多媒体工具)。
pip3 install pyqt5
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout, QMessageBox
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle("PyQt5 Demo")
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
self.label = QLabel("Hello, PyQt5!")
self.button = QPushButton("Click Me")
self.button.clicked.connect(self.show_message)
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)
def show_message(self):
QMessageBox.information(self, "Message", "Button clicked!")
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
customtkinter是Tkinter的增强版,提供现代化UI设计(圆角、渐变、主题切换),适合需要更好视觉效果的应用。
pip3 install customtkinter
import customtkinter as ctk
def login():
print(f"Login: {entry_username.get()}, Remember: {checkbox.get()}")
ctk.set_appearance_mode("dark") # 主题:light/dark/system
ctk.set_default_color_theme("blue") # 主题颜色
root = ctk.CTk()
root.geometry("400x300")
root.title("Login System")
frame = ctk.CTkFrame(root)
frame.pack(pady=40, padx=40, fill="both", expand=True)
ctk.CTkLabel(frame, text="Login", font=("Arial", 24)).pack(pady=20)
entry_username = ctk.CTkEntry(frame, placeholder_text="Username")
entry_username.pack(pady=10)
entry_password = ctk.CTkEntry(frame, placeholder_text="Password", show="*")
entry_password.pack(pady=10)
checkbox = ctk.CTkCheckBox(frame, text="Remember Me")
checkbox.pack(pady=10)
ctk.CTkButton(frame, text="Login", command=login).pack(pady=20)
root.mainloop()
Kivy是基于OpenGL的跨平台库,支持触摸屏、动画和手势,适合开发移动应用或创新交互界面(如游戏、教育工具)。
pip3 install kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical', padding=50)
self.label = Label(text="Hello, Kivy!", font_size=24)
button = Button(text="Click Me", size_hint=(None, None), size=(150, 50))
button.bind(on_press=self.update_label)
layout.add_widget(self.label)
layout.add_widget(button)
return layout
def update_label(self, instance):
self.label.text = "Button clicked!"
MyApp().run()
wxPython基于wxWidgets(C++库),生成的应用具有原生操作系统外观,适合需要融入系统风格的桌面应用(如文档编辑器、聊天工具)。
pip3 install wxpython
import wx
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(None, title="wxPython Demo", size=(300, 200))
panel = wx.Panel(frame)
label = wx.StaticText(panel, label="Hello, wxPython!", pos=(50, 50))
button = wx.Button(panel, label="Click Me", pos=(50, 100))
button.Bind(wx.EVT_BUTTON, self.on_click)
frame.Show()
return True
def on_click(self, event):
wx.MessageBox("Button clicked!", "Message", wx.OK | wx.ICON_INFORMATION)
if __name__ == "__main__":
app = MyApp()
app.MainLoop()
sudo apt update && sudo apt install python3 python3-pip
sudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
以上库均能在Ubuntu上稳定运行,选择时可根据项目复杂度(如Tkinter适合简单工具,PyQt5适合复杂应用)、界面需求(如Kivy适合触摸屏,wxPython适合原生外观)和学习成本(如customtkinter易上手,PyQt5需更多学习)决定。