温馨提示×

Python GUI在Ubuntu上如何实现

小樊
60
2025-08-29 19:08:25
栏目: 编程语言

在Ubuntu上实现Python GUI(图形用户界面)有多种方法,以下是一些常用的库和框架:

1. Tkinter

Tkinter是Python的标准GUI库,通常随Python一起安装。它简单易用,适合快速开发小型应用。

import tkinter as tk

def on_button_click():
    label.config(text="Hello, " + entry.get())

root = tk.Tk()
root.title("Tkinter Example")

label = tk.Label(root, text="Enter your name:")
label.pack()

entry = tk.Entry(root)
entry.pack()

button = tk.Button(root, text="Greet", command=on_button_click)
button.pack()

root.mainloop()

2. PyQt5/PyQt6

PyQt是一个功能强大的Python GUI框架,基于Qt库。它提供了丰富的组件和工具,适合开发复杂的桌面应用。

安装PyQt5

sudo apt-get install python3-pyqt5

示例代码

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('PyQt5 Example')
        self.setGeometry(100, 100, 300, 200)

        layout = QVBoxLayout()

        self.label = QLabel('Enter your name:', self)
        layout.addWidget(self.label)

        self.entry = QLineEdit(self)
        layout.addWidget(self.entry)

        self.button = QPushButton('Greet', self)
        self.button.clicked.connect(self.on_button_click)
        layout.addWidget(self.button)

        self.setLayout(layout)

    def on_button_click(self):
        self.label.setText("Hello, " + self.entry.text())

if __name__ == '__main__':
    app = QApplication([])
    ex = MyApp()
    ex.show()
    app.exec_()

安装PyQt6

sudo apt-get install python3-pyqt6

3. Kivy

Kivy是一个开源的Python库,用于开发多点触控应用。它支持Android、iOS、Linux、OS X和Windows。

安装Kivy

sudo apt-get install python3-kivy

示例代码

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput

class MyApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical')

        self.label = Label(text="Enter your name:")
        layout.add_widget(self.label)

        self.entry = TextInput(multiline=False)
        layout.add_widget(self.entry)

        self.button = Button(text="Greet")
        self.button.bind(on_press=self.on_button_click)
        layout.add_widget(self.button)

        return layout

    def on_button_click(self, instance):
        self.label.text = "Hello, " + self.entry.text

if __name__ == '__main__':
    MyApp().run()

4. wxPython

wxPython是另一个流行的Python GUI框架,基于wxWidgets库。它提供了跨平台的GUI开发能力。

安装wxPython

sudo apt-get install python3-wxgtk4.0

示例代码

import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(MyFrame, self).__init__(*args, **kw)

        pnl = wx.Panel(self)
        st = wx.StaticText(pnl, label="Enter your name:", pos=(20, 20))
        self.txt = wx.TextCtrl(pnl, pos=(100, 18), size=(200, -1))
        btn = wx.Button(pnl, label="Greet", pos=(100, 50))
        btn.Bind(wx.EVT_BUTTON, self.on_button_click)

        self.SetTitle('wxPython Example')
        self.Centre()

    def on_button_click(self, event):
        self.txt.SetLabel("Hello, " + self.txt.GetValue())

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None, title="wxPython Example", size=(300, 200))
    frame.Show(True)
    app.MainLoop()

这些库和框架各有特点,选择哪个取决于你的具体需求和偏好。Tkinter适合快速原型开发,PyQt和PySide适合复杂的应用,Kivy适合多点触控应用,而wxPython则提供了跨平台的GUI开发能力。

0