Ubuntu系统下Python图形界面开发指南
在Ubuntu上开发Python图形界面(GUI)前,需确保系统已安装Python 3及pip(Python包管理工具)。若未安装,可通过以下命令完成:
sudo apt update
sudo apt install python3 python3-pip
这一步是后续安装GUI库的基础。
Ubuntu环境下,Python GUI开发可选择标准库(如Tkinter)或第三方库(如PyQt5、Kivy、wxPython),以下是各库的具体实现方法:
Tkinter是Python内置的GUI库,无需额外安装,适合快速开发简单桌面应用。
import tkinter as tk
def say_hello():
print("按钮被点击了!")
# 创建主窗口
root = tk.Tk()
root.title("Tkinter示例")
root.geometry("300x200")
# 添加标签
label = tk.Label(root, text="你好,Tkinter!", font=("微软雅黑", 12))
label.pack(pady=20)
# 添加按钮
button = tk.Button(root, text="点击我", command=say_hello, bg="#4CAF50", fg="white")
button.pack()
# 进入主循环
root.mainloop()
代码说明:tk.Tk()创建主窗口,Label显示文本,Button绑定点击事件,mainloop()保持窗口运行。grid()布局替代pack(),实现更复杂的界面排列;添加Entry组件接收用户输入,或使用messagebox显示弹窗。PyQt5是Qt框架的Python绑定,提供丰富的组件和可视化设计工具,适合开发专业级桌面应用。
pip3 install pyqt5
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
def main():
# 创建应用对象
app = QApplication(sys.argv)
# 创建主窗口
window = QMainWindow()
window.setWindowTitle("PyQt5示例")
window.setGeometry(100, 100, 400, 300) # (x, y, 宽度, 高度)
# 添加标签
label = QLabel("你好,PyQt5!", window)
label.move(150, 130) # (x, y)坐标
# 显示窗口
window.show()
# 进入应用主循环
sys.exit(app.exec_())
if __name__ == "__main__":
main()
代码说明:QApplication管理应用生命周期,QMainWindow创建主窗口,QLabel显示文本,move()设置组件位置。Qt Designer可视化设计界面(通过pip install pyqt5-tools安装),生成.ui文件后转换为Python代码,提升开发效率。Kivy是基于OpenGL的跨平台GUI库,支持触摸屏操作,适合开发移动端或需要触控的应用。
sudo apt update
sudo apt install python3-kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class MyApp(App):
def build(self):
# 创建布局
layout = BoxLayout(orientation='vertical', padding=10, spacing=10)
# 添加标签
label = Label(text="你好,Kivy!", font_size=20)
# 添加按钮
button = Button(text="点击我", size_hint=(None, None), size=(100, 50))
button.bind(on_press=lambda x: setattr(label, 'text', "按钮被点击了!"))
# 将组件添加到布局
layout.add_widget(label)
layout.add_widget(button)
return layout
if __name__ == "__main__":
MyApp().run()
代码说明:App是应用基类,BoxLayout实现垂直布局,Label和Button分别显示文本和按钮,bind方法绑定点击事件。wxPython是wxWidgets C++库的Python封装,提供原生外观的控件,适合开发跨平台桌面应用。
sudo apt update
sudo apt install python3-wxgtk4.0
import wx
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(None, wx.ID_ANY, "wxPython示例", size=(400, 300))
# 创建面板
panel = wx.Panel(self, wx.ID_ANY)
# 添加标签
label = wx.StaticText(panel, wx.ID_ANY, "你好,wxPython!", pos=(100, 100), size=(200, 30))
# 设置字体
font = wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)
label.SetFont(font)
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
frame.Show(True)
app.MainLoop()
代码说明:wx.Frame创建主窗口,wx.Panel作为容器,wx.StaticText显示文本,SetFontSize设置字体样式。