PyQt安装与常用组件介绍
1. PyQt安装指南
1.1 Mac OS X系统安装
在Mac OS X系统上安装PyQt时,执行
sudo
命令会提示输入密码。构建PyQt可能需要较长时间,需耐心等待。
-
文档获取
:Qt文档可通过Qt Assistant获取,可从Finder运行。PyQt文档以HTML格式存于
$HOME/Desktop/PyQt-mac-gpl-4.2/doc目录,建议将其移至固定位置并在浏览器添加书签。 -
示例运行
:若下载了示例文件,可将
pyqtbook.tar.gz解压到$HOME目录,得到$HOME/pyqt目录,包含所有示例和习题答案。在该目录下有mkpyqt.py和makepyqt.pyw文件,可将其移动或软链接到$PATH目录(如$HOME/bin)方便使用。部分示例依赖Qt Designer的.ui文件或.qrc资源文件,可执行以下命令进行转换:
cd $HOME/pyqt
./mkpyqt.py -r
-
图形应用测试
:解压示例后,可前往桌面,点击
pyqt目录,再点击chap12目录,点击multipedes.pyw查看图形应用。若弹出不必要的终端窗口,右键点击multipedes.pyw,点击信息对话框,将“打开方式”设置为正确版本的Python启动器,并将更改应用到所有.pyw后缀的文件。
1.2 Linux和Unix系统安装
1.2.1 已预装PyQt4的系统
若使用Kubuntu(7.04 Fiesty Fawn及更高版本),系统已预装PyQt4,只需安装示例文件和文档包
python-doc
与
python-qt4-doc
。
1.2.2 未预装PyQt4的系统
对于未预装PyQt4的Linux和大多数Unix系统,需安装四个工具:Qt C++应用开发框架、Python解释器及其库、SIP绑定工具和PyQt4本身。
-
使用标准包安装
:对于ArchLinux、Debian、Fedora等系统,可使用系统的包管理器(如Adept、Pirut、apt-get、yum等)安装所需组件。PyQt4包通常名为
pyqt4
、
PyQt4
或
pyqt4-dev-tools
,其文档包通常为
pyqt4-doc
、
python-qt4-doc
或
PyQt4-examples
,Python文档包通常为
python-doc
或
python-docs
,IDLE可在
idle
或
python-tools
包中获取,Eric4 IDE也有对应包。
-
手动编译安装
:对于较旧的发行版、无合适包或想手动获取最新版本的用户,可手动编译安装。需满足两个条件:已安装并运行C++编译器和工具链(如
make
);以root权限安装(使用
su
或
sudo
)或知道使用
configure
的
--prefix
选项进行本地安装。
-
下载文件
:需下载
qt-x11-opensource-src-4.2.3.tar.gz
、
Python-2.5.1.tgz
、
sip-4.6.tar.gz
、
PyQt-x11-gpl-4.2.tar.gz
和
pyqtbook.tar.gz
。
-
安装步骤
:
1.
安装Qt
:
cd $HOME/packages
tar xvfz qt-x11-opensource-src-4.2.3.tar.gz
cd qt-x11-opensource-src-4.2.3
./configure -fast -qt-sql-sqlite -no-qt3support
make
sudo make install
2. **安装Python**:
cd $HOME/packages
tar xvfz Python-2.5.1.tgz
cd Python-2.5.1
./configure
make
sudo make install
3. **安装SIP**:
cd $HOME/packages
tar xvfz sip-4.6.tar.gz
cd sip-4.6
python configure.py
make
sudo make install
4. **安装PyQt**:
cd $HOME/packages
tar xvfz PyQt-x11-gpl-4.2.tar.gz
cd PyQt-x11-gpl-4.2
python configure.py
make
sudo make install
安装完成后,可将Qt、Python和PyQt的文档移至固定位置并添加书签,还可运行示例进行测试。
1.3 安装流程总结
| 系统 | 安装方式 | 步骤 |
|---|---|---|
| Mac OS X | 常规安装 |
输入密码执行
sudo
命令,构建PyQt,处理文档和示例文件
|
| Linux和Unix(已预装) | 安装示例和文档 |
安装示例文件和
python-doc
、
python-qt4-doc
|
| Linux和Unix(未预装) | 标准包安装 | 使用包管理器安装所需组件 |
| Linux和Unix(未预装) | 手动编译安装 | 下载文件,依次安装Qt、Python、SIP和PyQt |
1.4 安装流程图
graph TD;
A[选择系统] --> B{Mac OS X};
A --> C{Linux和Unix};
B --> D[常规安装];
C --> E{已预装PyQt4};
C --> F{未预装PyQt4};
E --> G[安装示例和文档];
F --> H{标准包安装};
F --> I{手动编译安装};
H --> J[使用包管理器安装];
I --> K[下载文件];
K --> L[安装Qt];
L --> M[安装Python];
M --> N[安装SIP];
N --> O[安装PyQt];
2. 常用PyQt组件介绍
2.1 组件概述
以下介绍一些常用的PyQt组件,这些组件在不同的应用场景中发挥着重要作用。
2.2 各组件详细介绍
| 组件名称 | 功能描述 |
|---|---|
| QCalendarWidget |
主要作为输入组件供用户选择日期,显示高度可配置,可设置周数显示、日期格式、颜色字体等,还可设置最小和最大允许日期。在
QDateEdit
或
QDateTimeEdit
上调用
setCalendarPopup(True)
可弹出该组件。
|
| QCheckBox |
提供简单的是/否选择,调用
setTristate(True)
可使其具有三种状态,适用于表示允许
IS NULL
的布尔数据库字段。
|
| QComboBox |
用于在垂直空间不足时向用户展示项目列表,调用
setEditable(True)
可让用户选择列表项或输入自定义文本,可使用
addItem()
、
addItems()
或
setModel()
填充。
|
| QDateEdit、QDateTimeEdit、QTimeEdit | 分别用于显示和输入日期、日期和时间、时间,默认使用特定区域的日期和时间格式,可更改格式并设置最小和最大允许日期和时间。 |
| QDialogButtonBox | 用于创建按钮行或列,按钮可以是预定义角色和文本的标准按钮,也可自定义角色和文本,会根据角色和底层窗口系统的用户界面指南自动排列按钮。 |
| QFontComboBox |
用于提供字体选择,如在工具栏中使用。对于Qt 4.0和Qt 4.1,可使用普通
QComboBox
填充
QFontDatabase.families()
返回的列表来实现类似功能(无字体预览)。
|
| QGroupBox和QRadioButton |
QGroupBox
可作为视觉分组设备,可设置为可勾选,勾选时其中的组件才可交互。
QRadioButton
放在
QGroupBox
中时,用户只能选择其中一个。
|
| QGraphicsView |
用于查看
QGraphicsScene
中的
QGraphicsItems
,可对场景进行缩放、旋转等变换,滚动条会根据需要自动出现,可提供自己的背景和前景。
|
| QLabel |
可用于显示图像、纯文本字符串、
QTextDocument
或HTML,带有加速器的标签可关联“伙伴”组件,按下加速器时将键盘焦点传递给伙伴。
|
| QLCDNumber | 用于以七段LCD样式显示数字。 |
| QLineEdit | 用于接受用户输入的单行文本,可使用验证器或输入掩码约束文本,还可设置回显模式。 |
| QListView和QListWidget |
用户可通过它们选择一个或多个项目,
QListView
需与
QAbstractItemModel
子类配合使用,
QListWidget
有内置模型,可直接添加项目。垂直空间不足时可使用
QComboBox
替代。
|
| QProgressBar |
用于显示长时间运行操作的进度,常放在
QMainWindow
的状态栏中,也可弹出
QProgressDialog
。
|
| QPushButton |
用于触发操作,点击可能弹出对话框的按钮通常在文本末尾添加省略号,按钮可设置弹出菜单或切换状态。自Qt 4.2起,大多数应用使用
QDialogButtonBox
而非单个
QPushButton
。
|
| QSlider |
常用于显示比例关系,常与显示实际数量的
QLabel
或
QLCDNumber
配合使用,可垂直或水平排列,
QScrollBar
可用于类似目的。
|
| QDoubleSpinBox和QSpinBox |
用于接受和显示数字,可设置前缀、后缀和对齐方式,还可设置最小和最大值,
QDoubleSpinBox
可设置小数点后的位数,也可使用
QLineEdit
结合验证器实现类似功能。
|
| QTableView和QTableWidget |
用于以表格形式展示数据,
QTableView
需与
QAbstractItemModel
子类配合使用,
QTableWidget
有内置模型,可直接添加项目,单元格可显示图标和文本。
|
| QTabWidget | 用于在空间有限时或逻辑分组组件,标签有两种形状设置,可出现在顶部、左侧、右侧或底部,文本在左右显示时可旋转。 |
| QTextEdit和QTextBrowser |
可显示HTML,包括列表、表格和图像,
QTextEdit
可作为编辑组件,
QTextBrowser
支持可点击链接,可作为简单的Web浏览器,两者都支持CSS。
|
| QTreeView和QTreeWidget |
用于展示层次结构数据,
QTreeView
需与
QAbstractItemModel
子类配合使用,
QTreeWidget
有内置模型,可直接添加项目。
|
2.3 组件使用场景示例
| 应用场景 | 适用组件 |
|---|---|
| 日期选择 | QCalendarWidget、QDateEdit、QDateTimeEdit、QTimeEdit |
| 简单选择 | QCheckBox、QRadioButton |
| 列表展示 | QComboBox、QListView、QListWidget |
| 进度显示 | QProgressBar |
| 表格数据展示 | QTableView、QTableWidget |
| 层次结构数据展示 | QTreeView、QTreeWidget |
| 文本显示与编辑 | QLabel、QLineEdit、QTextEdit、QTextBrowser |
| 按钮布局 | QDialogButtonBox、QPushButton |
| 字体选择 | QFontComboBox |
| 图形显示 | QGraphicsView |
2.4 组件关系图
graph LR;
A[输入组件] --> B[QCalendarWidget];
A --> C[QCheckBox];
A --> D[QComboBox];
A --> E[QDateEdit];
A --> F[QDateTimeEdit];
A --> G[QTimeEdit];
A --> H[QLineEdit];
A --> I[QDoubleSpinBox];
A --> J[QSpinBox];
B --> K[日期选择];
C --> L[简单选择];
D --> M[列表选择];
E --> K;
F --> K;
G --> K;
H --> N[文本输入];
I --> O[数字输入];
J --> O;
P[显示组件] --> Q[QLabel];
P --> R[QLCDNumber];
P --> S[QListView];
P --> T[QListWidget];
P --> U[QTableView];
P --> V[QTableWidget];
P --> W[QTreeView];
P --> X[QTreeWidget];
P --> Y[QTextEdit];
P --> Z[QTextBrowser];
Q --> N;
R --> O;
S --> M;
T --> M;
U --> P[表格显示];
V --> P;
W --> Q[层次结构显示];
X --> Q;
Y --> N;
Z --> N;
AA[布局组件] --> AB[QDialogButtonBox];
AA --> AC[QPushButton];
AA --> AD[QTabWidget];
AB --> R[按钮布局];
AC --> R;
AD --> S[标签布局];
AE[图形组件] --> AF[QGraphicsView];
AF --> T[图形显示];
3. 组件使用示例代码
3.1 QCalendarWidget示例
以下是一个简单的使用
QCalendarWidget
的示例代码:
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, QCalendarWidget
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
calendar = QCalendarWidget()
layout.addWidget(calendar)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
在这个示例中,我们创建了一个
QWidget
窗口,并在其中添加了一个
QCalendarWidget
,最后显示窗口。
3.2 QCheckBox示例
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, QCheckBox
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
check_box = QCheckBox("选择我")
check_box.setTristate(True)
layout.addWidget(check_box)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
此示例中,我们创建了一个带有三态的
QCheckBox
并添加到窗口中。
3.3 QComboBox示例
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, QComboBox
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
combo_box = QComboBox()
combo_box.addItems(["选项1", "选项2", "选项3"])
combo_box.setEditable(True)
layout.addWidget(combo_box)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
这里创建了一个可编辑的
QComboBox
,并添加了几个选项。
3.4 更多组件示例代码列表
| 组件名称 | 示例代码 |
|---|---|
| QDateEdit |
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, QDateEdit
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
date_edit = QDateEdit()
layout.addWidget(date_edit)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
``` |
| QDialogButtonBox |
```python
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, QDialogButtonBox, QPushButton
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
button_box = QDialogButtonBox()
ok_button = QPushButton("确定")
cancel_button = QPushButton("取消")
button_box.addButton(ok_button, QDialogButtonBox.AcceptRole)
button_box.addButton(cancel_button, QDialogButtonBox.RejectRole)
layout.addWidget(button_box)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
``` |
| QFontComboBox |
```python
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, QFontComboBox
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
font_combo_box = QFontComboBox()
layout.addWidget(font_combo_box)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
``` |
## 4. PyQt开发注意事项
### 4.1 环境配置注意
- **Python版本**:确保使用的Python版本与PyQt兼容,如示例中使用的是Python 2.x系列版本,需使用生产版本。
- **路径设置**:在手动编译安装时,要确保各组件的路径设置正确,特别是在运行`configure.py`脚本时,若Python不在`$PATH`中,需提供完整路径。
### 4.2 组件使用注意
- **模型使用**:对于需要与`QAbstractItemModel`子类配合使用的组件(如`QListView`、`QTableView`、`QTreeView`),要正确设置模型,否则可能无法正常显示数据。
- **资源管理**:在使用组件时,要注意资源的释放,避免内存泄漏,例如在关闭窗口时确保相关资源被正确清理。
### 4.3 常见问题解决
| 问题描述 | 解决方法 |
| ---- | ---- |
| `mkpyqt.py`无法工作 | 编辑`mkpyqt.py`文件,至少硬编码`pyuic4`的路径。 |
| 运行示例时弹出不必要的终端窗口 | 右键点击`.pyw`文件,点击信息对话框,将“打开方式”设置为正确版本的Python启动器,并将更改应用到所有`.pyw`后缀的文件。 |
### 4.4 注意事项流程图
```mermaid
graph TD;
A[开发前] --> B{环境配置};
B --> C[Python版本兼容];
B --> D[路径设置正确];
A --> E{组件使用};
E --> F[模型正确设置];
E --> G[资源正确管理];
A --> H{常见问题解决};
H --> I[mkpyqt.py问题处理];
H --> J[终端窗口问题处理];
5. 总结
通过本文,我们详细介绍了PyQt在Mac OS X和Linux/Unix系统上的安装方法,包括使用标准包安装和手动编译安装。同时,介绍了多种常用的PyQt组件,包括它们的功能、使用场景和示例代码,还给出了开发过程中的注意事项和常见问题的解决方法。希望这些内容能帮助你顺利进行PyQt开发,创建出功能丰富、界面友好的应用程序。
| 内容模块 | 主要内容 |
|---|---|
| 安装指南 | 不同系统的安装方式及步骤 |
| 组件介绍 | 各组件功能、使用场景和示例代码 |
| 注意事项 | 环境配置、组件使用和常见问题解决 |
超级会员免费看
3978

被折叠的 条评论
为什么被折叠?



