本文将介绍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为我们提供了大量的工具,来设计用户友好的图形界面。通过合理的控件组合和布局管理,你可以创建出符合需求的高质量桌面应用。