PyQt常用控件:Python桌面应用开发必备工具

189 阅读4分钟

本文将介绍PyQt中几个常用控件及其应用,让你在学习PyQt的过程中能够快速上手。

1. QLabel — 标签控件

QLabel是PyQt中最常见的控件之一,主要用于显示文本或图像。你可以使用QLabel来添加描述性文字、标题、图片等内容。

示例代码:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel
from PyQt6.QtGui import QPixmap

def main():
    app = QApplication(sys.argv)  # 创建一个应用实例
    window = QWidget()  # 创建一个窗口实例
    window.setWindowTitle("QLabel 示例")  # 设置窗口标题
    window.setGeometry(100, 100, 400, 300)  # 设置窗口位置和大小
    
    label = QLabel('欢迎使用PyQt', window)
    label.move(50, 50)  # 设置标签的位置
    
    label2 = QLabel(window)
    pixmap = QPixmap('./icon.png')  # 替换为你本地图片的路径
    # 将图片设置到 QLabel 上
    label2.setPixmap(pixmap)
    label2.move(150, 50)
    
    html_content = """
    <h1>PyQt5 官方文档</h1>
    <p>访问 <a href="https://www.riverbankcomputing.com/software/pyqt/intro">PyQt5官方文档</a> 获取更多信息。</p>
    <img src="https://www.riverbankcomputing.com/static/img/logos/pyqt-logo.png" width="200" />
    """
    label3 = QLabel(window)
    label3.setText(html_content)  # 设置HTML内容
    label3.setOpenExternalLinks(True)  # 允许点击链接打开外部网页
    label3.move(0, 100)
    #label3.resize(400, 200)

    window.show()  # 显示窗口
    sys.exit(app.exec())  # 启动应用程序事件循环,等待用户的操作。

if __name__ == '__main__':
    main()

2. QPushButton — 按钮控件

QPushButton用于实现按钮控件,可以响应用户的点击事件。PyQt中的按钮控件非常灵活,支持设置文本、图标和自定义样式。

示例代码:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton

def main():
    app = QApplication(sys.argv)  # 创建一个应用实例
    window = QWidget()  # 创建一个窗口实例
    window.setWindowTitle("我的第一个 PyQt 应用")  # 设置窗口标题
    window.setGeometry(100, 100, 400, 300)  # 设置窗口位置和大小
    
    # 创建一个按钮
    button = QPushButton("点击我", window)  # 按钮文本为 "点击我"
    button.setGeometry(150, 120, 100, 50)  # 设置按钮的位置和大小

    # 定义按钮点击后的事件
    def on_button_click():
        window.setWindowTitle("按钮已点击!")

    # 连接按钮点击事件到处理函数
    button.clicked.connect(on_button_click)
    
    window.show()  # 显示窗口
    sys.exit(app.exec())  # 启动应用程序事件循环,等待用户的操作。

if __name__ == '__main__':
    main()

3. QLineEdit — 单行文本输入框

QLineEdit是一个单行文本输入框,常用于用户输入信息,如用户名、密码、搜索框等。

示例代码:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QVBoxLayout, QHBoxLayout

def main():
    app = QApplication(sys.argv)  # 创建一个应用实例
    window = QWidget()  # 创建一个窗口实例
    window.setWindowTitle("单行文本输入框")  # 设置窗口标题
    window.setGeometry(100, 100, 400, 300)  # 设置窗口位置和大小
    
    # 创建标签和文本框
    label = QLabel('请输入姓名:')
    textbox = QLineEdit()

    # 布局
    layout = QVBoxLayout()
    layout.addWidget(label)
    layout.addWidget(textbox)

    window.setLayout(layout)
    
    window.show()  # 显示窗口
    sys.exit(app.exec())  # 启动应用程序事件循环,等待用户的操作。

if __name__ == '__main__':
    main()

4. QTextEdit — 多行文本输入框

QTextEdit是一个可以处理多行文本的控件,支持显示富文本(如加粗、斜体、改变字体等)。它常用于文本编辑器、聊天窗口等应用。

示例代码:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QVBoxLayout, QHBoxLayout

def main():
    app = QApplication(sys.argv)  # 创建一个应用实例
    window = QWidget()  # 创建一个窗口实例
    window.setWindowTitle("多行文本输入框")  # 设置窗口标题
    window.setGeometry(100, 100, 400, 300)  # 设置窗口位置和大小
    
    label = QLabel('请输入文本:', window)
    
    # 创建标签和文本框
    text_edit = QTextEdit(window)
    text_edit.setPlainText('欢迎使用PyQt6!')  # 设置默认文本

    # 布局
    layout = QVBoxLayout()
    layout.addWidget(label)
    layout.addWidget(text_edit)

    window.setLayout(layout)
    
    window.show()  # 显示窗口
    sys.exit(app.exec())  # 启动应用程序事件循环,等待用户的操作。

if __name__ == '__main__':
    main()

5. QComboBox — 下拉框控件

QComboBox是一个下拉列表框控件,用户可以选择列表中的一个选项。它常用于表单、设置界面、选择类别等地方。

示例代码:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QComboBox, QVBoxLayout, QHBoxLayout

def main():
    app = QApplication(sys.argv)  # 创建一个应用实例
    window = QWidget()  # 创建一个窗口实例
    window.setWindowTitle("下拉框")  # 设置窗口标题
    window.setGeometry(100, 100, 400, 300)  # 设置窗口位置和大小
    
    # 创建下拉框
    combo_box = QComboBox(window)
    combo_box.addItem('Python')
    combo_box.addItem('JavaScript')
    combo_box.addItem('Java')

    # 创建标签来显示选择的内容
    label = QLabel('请选择编程语言:')

    # 布局
    layout = QVBoxLayout()
    layout.addWidget(label)
    layout.addWidget(combo_box)

    window.setLayout(layout)
    
    window.show()  # 显示窗口
    sys.exit(app.exec())  # 启动应用程序事件循环,等待用户的操作。

if __name__ == '__main__':
    main()

6. QListWidget — 列表控件

QListWidget是一个列表控件,用于显示一列项(如文本、图标等)。它支持选择、拖放、排序等操作,非常适合展示数据项、文件列表等内容。

示例代码:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QListWidget, QVBoxLayout, QHBoxLayout

def main():
    app = QApplication(sys.argv)  # 创建一个应用实例
    window = QWidget()  # 创建一个窗口实例
    window.setWindowTitle("列表")  # 设置窗口标题
    window.setGeometry(100, 100, 400, 300)  # 设置窗口位置和大小
    
    # 创建下拉框
    list_widget = QListWidget(window)
    list_widget.addItem('Python')
    list_widget.addItem('C++')
    list_widget.addItem('Java')

    # 布局
    layout = QVBoxLayout()
    layout.addWidget(list_widget)

    window.setLayout(layout)
    
    window.show()  # 显示窗口
    sys.exit(app.exec())  # 启动应用程序事件循环,等待用户的操作。

if __name__ == '__main__':
    main()

总结

PyQt是一个功能强大的Python GUI开发框架,它提供了丰富的控件来帮助开发者快速创建桌面应用。从简单的文本标签、按钮控件,到复杂的多行文本框、列表框等,PyQt为我们提供了大量的工具,来设计用户友好的图形界面。通过合理的控件组合和布局管理,你可以创建出符合需求的高质量桌面应用。