发布于2026-07-05 阅读(0)
扫一扫,手机访问

先说几个核心判断:在Ubuntu上搞Python图形界面(GUI),可选的库其实不少,但每个库的脾气秉性差异挺大——有的是轻量级入门神器,有的则是为复杂企业级应用而生,还有的专攻跨平台触控体验。下面就把主流库的安装、基本用法和特色梳理清楚,方便你快速找到最适合自己的那一款。
Tkinter是Python自带的GUI库,Ubuntu默认就包含,连安装都省了,适合快速搭个小工具界面。
sudo apt update && sudo apt install python3-tkimport tkinter as tk
from tkinter import messagebox
def update_label():
label.config(text=f"你输入了:{entry.get()}")
root = tk.Tk()
root.title("Tkinter入门示例")
root.geometry("300x200")
label = tk.Label(root, text="欢迎使用Tkinter!", font=("Arial", 12))
label.pack(pady=10)
entry = tk.Entry(root, width=25)
entry.pack(pady=5)
button = tk.Button(root, text="提交", command=update_label)
button.pack(pady=10)
root.mainloop()PyQt5是Qt框架的Python版本,控件丰富,还有可视化设计工具,企业级桌面软件选它准没错。
pip3 install pyqt5 pyqt5-toolsimport sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt5示例")
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
label = QLabel("Hello, PyQt5!")
button = QPushButton("点击我")
button.clicked.connect(lambda: label.setText("按钮被点击了!"))
layout.addWidget(label)
layout.addWidget(button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())designer 启动Qt Designer,拖拽控件就能设计界面,保存成 .ui 文件,再用 pyuic5 转成Python代码,开发效率直接拉满。customtkinter是Tkinter的升级版,圆角、渐变、主题切换全都有,适合对颜值有要求的小应用。
pip3 install customtkinterimport customtkinter as ctk
def login():
print("登录成功!")
ctk.set_appearance_mode("dark") # 主题:light/dark/system
ctk.set_default_color_theme("blue") # 主题颜色
root = ctk.CTk()
root.geometry("400x300")
root.title("登录系统")
frame = ctk.CTkFrame(root, fg_color=("gray10", "gray20"))
frame.pack(pady=40, padx=40, fill="both", expand=True)
label = ctk.CTkLabel(frame, text="用户登录", font=("Arial", 20, "bold"))
label.pack(pady=20)
entry_username = ctk.CTkEntry(frame, placeholder_text="用户名", width=200)
entry_username.pack(pady=10)
entry_password = ctk.CTkEntry(frame, placeholder_text="密码", show="*", width=200)
entry_password.pack(pady=10)
button = ctk.CTkButton(frame, text="登录", command=login, width=150)
button.pack(pady=20)
root.mainloop()Kivy基于OpenGL,原生支持触摸屏操作,同一个代码能跑在手机、平板和桌面,适合游戏或教育类应用。
pip3 install kivyfrom kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical', padding=50, spacing=20)
button = Button(text="点击我", size_hint=(None, None), size=(200, 100))
button.bind(on_press=lambda x: print("按钮被点击了!"))
layout.add_widget(button)
return layout
if __name__ == "__main__":
MyApp().run()wxPython封装了wxWidgets C++库,控件外观和操作系统原生风格一致,办公软件这类需要“融入系统”的应用特别合适。
pip3 install wxpythonimport wx
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(None, title="wxPython示例", size=(300, 200))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(panel, label="请输入文本:")
vbox.Add(label, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10)
self.text_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE)
vbox.Add(self.text_ctrl, proportion=1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM, border=10)
button = wx.Button(panel, label="提交")
button.Bind(wx.EVT_BUTTON, self.on_submit)
vbox.Add(button, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10)
panel.SetSizer(vbox)
def on_submit(self, event):
print(f"输入的文本:{self.text_ctrl.GetValue()}")
app = wx.App(False)
frame = MyFrame()
frame.Show()
app.MainLoop()总结一下各库的定位:初学者推荐Tkinter或customtkinter,上手快;复杂桌面应用选PyQt5,功能和生态最完整;跨设备需求(手机+桌面)用Kivy;追求原生外观就上wxPython。根据你的项目场景,挑一个开干就完了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8