您的位置:

Python Gui实现快捷高效用户界面

一、Gui基础介绍

Graphical User Interface,简称GUI,指的是图形用户界面。与之对应的是Text-based User Interface,即基于文本的用户界面。GUI 是人们通过视觉和触觉接受信息,通过鼠标、键盘来输入信息,从而与计算机系统交互的一种表现形式。

Python 作为一门高级语言,它自带各种 GUI 库( PyQt5、Tkinter、Pygame、wxPython 等)。这些库提供各种组件和方法用于快速地构建 GUI 应用程序,缩短了开发 GUI 应用程序的时间。

二、使用 Qt Designer 设计 UI 界面

Qt Designer 是一款方便易用的可视化 UI 设计工具,被广泛应用于 PyQt5 的开发中。使用 Qt Designer 设计的 GUI 会生成一个 .ui 文件,可以通过利用 PyQt5 中的工具将其转换成 Python 代码。

下面是一个简单的例子,以 PyQt5 和 Qt Designer 的组合为基础。


# 引入必要的库
from PyQt5.QtWidgets import QDialog, QApplication, QMessageBox
from PyQt5.uic import loadUi
import sys

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
				
        # 加载 UI 界面
        loadUi('myform.ui', self)
        
        # 设置按钮点击事件
        self.pushButton.clicked.connect(self.show_message)
        
    def show_message(self):
        # 弹出提示框
        QMessageBox.information(self, "Hello World", "Welcome to Python GUI programming")
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = MyForm()
    form.show()
    sys.exit(app.exec_())

通过以上代码,我们可以实现这样一个简单的 GUI 程序。在这里我们引用了 PyQt5 中的 QDialog、QApplication、QMessageBox,以及 PyQt5 中提供的 loadUi 方法。其中 loadUi 方法用于将 .ui 文件加载并转换成 Python 代码。

三、常见的 GUI 组件

PyQt5 中常见的 GUI 组件有 QLineEdit、QComboBox、QCheckBox、QPushButton 等。以下是这些组件的用法示例。

1、QLineEdit

QLineEdit 是一个简单的单行输入框。我们可以使用 clear()、setText()、text() 等方法操作它。下面是一个简单的例子。


from PyQt5.QtWidgets import QLineEdit, QApplication, QWidget, QLabel
import sys
 
class Example(QWidget):
  
    def __init__(self):
        super().__init__()
         
        self.initUI()
         
    def initUI(self):
        # 创建一个输入框
        lineEdit = QLineEdit(self)
        lineEdit.move(60, 60)
         
        # 创建一个标签
        label = QLabel(self)
        label.move(60, 100)
         
        # 设置按钮点击事件
        lineEdit.textChanged[str].connect(lambda text: label.setText(text))
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QLineEdit 例子')
        self.show()
 
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

2、QComboBox

QComboBox 是一个下拉框。我们可以使用 addItem()、removeItem()、currentText() 等方法操作它,来获取和设置下拉框中的选项。下面是一个简单的例子。


from PyQt5.QtWidgets import QComboBox, QApplication, QWidget, QLabel
import sys
 
class Example(QWidget):
  
    def __init__(self):
        super().__init__()
         
        self.initUI()
         
    def initUI(self):
        # 创建一个下拉框
        comboBox = QComboBox(self)
        comboBox.addItem("选项1")
        comboBox.addItem("选项2")
        comboBox.move(60, 60)
         
        # 创建一个标签
        label = QLabel(self)
        label.move(60, 100)
         
        # 设置按钮点击事件
        comboBox.activated[str].connect(lambda text: label.setText(text))
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QComboBox 例子')
        self.show()
 
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

3、QCheckBox

QCheckBox 是一个复选框。我们可以使用 isChecked()、setChecked() 等方法操作它,来获取和设置复选框的选中状态。


from PyQt5.QtWidgets import QCheckBox, QApplication, QWidget, QLabel
import sys
 
class Example(QWidget):
  
    def __init__(self):
        super().__init__()
         
        self.initUI()
         
    def initUI(self):
        # 创建一个复选框
        checkBox = QCheckBox("选项", self)
        checkBox.move(60, 60)
         
        # 创建一个标签
        label = QLabel(self)
        label.move(60, 100)
         
        # 设置按钮点击事件
        checkBox.stateChanged.connect(lambda: label.setText("已选中" if checkBox.isChecked() else "未选中"))
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QCheckBox 例子')
        self.show()
 
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

4、QPushButton

QPushButton 是一个普通按钮。我们可以使用 setText()、setDisabled()、clicked() 等方法操作它,来改变按钮的文字和状态,并添加点击事件。


from PyQt5.QtWidgets import QPushButton, QApplication, QWidget, QLabel
import sys
 
class Example(QWidget):
  
    def __init__(self):
        super().__init__()
         
        self.initUI()
         
    def initUI(self):
        # 创建一个按钮
        button = QPushButton("按钮", self)
        button.move(60, 60)
         
        # 创建一个标签
        label = QLabel(self)
        label.move(60, 100)
         
        # 设置按钮点击事件
        button.clicked.connect(lambda: label.setText("Hello World!"))
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QPushButton 例子')
        self.show()
 
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

四、总结

本文主要介绍了如何在 Python 中快速地开发 GUI 程序,同时详细介绍了 PyQt5 中常见的 GUI 组件的用法。这种方法可以大大缩短开发时间,使开发人员专注于业务逻辑,提高开发效率。

(完)