PyQt 编程
2024-08-25 20:17:51 0 举报
AI智能生成
PyQt programming mindchart
作者其他创作
大纲/内容
第一部分 Qt基础
第一章 Qt入门
1.1 Hello PyQt
开发环境搭建
运行第一个PyQt程序
运行结果
QApplication
QLable
格式化QLabel内容
运行结果
1.2 建立连接
创建一个按钮(PushButton),将按钮的点击动作(Click)与程序(QApplication)的退出操作(Quit)连接到一起
运行结果,点击按钮,程序退出
QPushButton
Signal/Slot
1.3 窗口部件的布局
创建一个微调框(SpinBox)和滑块(Slider),二者均可以完成年龄的输入,并且把两个控件之间的值改变信号(valueChanged)和设定动作(setValue)连接起来,可以实现二值值变化同步
使用一个水平分布的容器来管理控件的布局,并把布局加载到最后要显示的window窗口中
使用一个水平分布的容器来管理控件的布局,并把布局加载到最后要显示的window窗口中
运行界面
QHBoxLayout
QSlider
QSpinBox
Signal/Slot
布局管理器
QHBoxLayout
QVBoxLayout
QWidget.setLayout
函数调用从底层上来说会把layout内的所有子控件自动重定义父对象,他们会自动成为安装了这个布局的窗口的子对象,
所以当创建一个需要放进某个布局窗口的控件时,就没有必要显式指定父对象
函数调用从底层上来说会把layout内的所有子控件自动重定义父对象,他们会自动成为安装了这个布局的窗口的子对象,
所以当创建一个需要放进某个布局窗口的控件时,就没有必要显式指定父对象
setStretch可以指定排列时的占比
使用布局管理时,控件位置和大小会跟着窗口尺寸变化而变化
使用布局管理时,控件位置和大小会跟着窗口尺寸变化而变化
QGridLayout
1.4 使用参考文档
https://doc.qt.io/qtforpython-6/index.html
第二章 创建对话框
2.1 创建子类化的QDialog
创建QDialog子类
更多的控件
&:控件初始化时,设定字符串中添加‘&’前缀符号,可以开启快捷键功能,对应快捷键使用 Alt + Key来激活
tr(str) :将每一个用户可见的字符串使用tr(str) 包住,可以在后期将其翻译成其他语言
setBuddy :实现快捷键按下时,对应的Buddy控件获得焦点focus
setDefault :可以设置默认按钮,当按下Enter键时,默认按钮激活
多种布局方式组合使用
使用多种layout布局组件可以更好的管理界面布局
信号与槽的使用
Signal需要声明为类(class)级别的变量
Signal无法直接调用
2.2 深入介绍信号与槽
信号与槽的特性
所有继承自QObject或它的子类的类,都可以使用Signal/Slot
当对象的状态发生变化时,对象可以发出信号 emit signal
信号(Signal)发出时,Signal不需要知道是否有接收方
信号(Signal)发出时,Signal不需要知道是否有接收方
槽(Slot)用于接收信号,槽函数也是普通的成员函数,
它不需要知道是否已经连接上某个或多个信号
它不需要知道是否已经连接上某个或多个信号
slot和signal之间可以实现一对多的连接,即
一个signal可以连接多个slot
一个slot也可以连接多个signal
一个signal可以连接多个slot
一个slot也可以连接多个signal
信号与槽应用举例
预定义的信号与槽
实现按钮按下时,lineEdit内容清空
信号Signal连接到自定义的函数
增加一个自定义函数,将button click信号与自定义函数连接
在自定义类中添加Signal
自定义一个Button类(继承自QWidget)
Signal类支持多种参数类型的构造方式
#Python Types
#Qt Types
#多个不同类型参数
# 参数重载
重载示例
#创建signal时,也可以给signal预设一个名称
Slot创建
Slot在继承自QObject的子类中需要添加装饰符
@QtCore.Slot()
slot函数的签名需要与对应连接的signal参数类型一致
Signal/Slot 可以通过disconnect解除连接
解除
2.3 快速设计对话框
使用QtDesigner完成布局
1. 创建并初始化子窗口部件
2. 把子窗口部件放到布局中
3. 设置Tab键顺序
4. 使用pyside-uic导出
pyside6-uic gotocelldialog.ui -o gotocelldialog.py
每次在Qt Designer中对UI文件的修改,都需要重新执行pyside-uic指令
5. 创建与ui对应窗口类
创建类实现多重继承(QDialog/ Ui_Object)
调用setupUi,初始化UI界面
运行显示
6. 手动完成部件相关事件动作
- 给LineEdit添加正则验证
更多正则表达式参考RegularExxpression主题
- 给Button添加对应的Slot事件
继承自QDialog才会有accept/reject slot槽
2.4 改变对话框的形状
layout -- setSizeConstraint 可以在动态隐藏/显示界面元素时,保持窗口尺寸不变换
利用sizeHint可以获取控件的尺寸,并且可以用于控件之间的尺寸控制
内置的slot函数可以在Designer设计时连接,代码会一起生成到.ui文件
ord函数实现Char字符到ASCII码之间的转换
chr(A) 可以强制转换值到char类型
更多复杂的布局
QTabWidget
QListWidget
QStackedWidget
QTreeWidget
2.5 内置的窗口部件类和对话框类
按钮
QPushButton
QToolButton
QCheckBox
QRadioButton
单页容器
QGroupBox
QFrame
可以在界面上绘制一些直线,也可以作为其他部件的基类
多页容器
QTabWidget
QToolBox
项视图
QListView
列表形式
图标形式
QTreeView
QTableView
显示部件
QLabel
文本
图片
QLCDNumber
QProgressBar
QTextBrowser
输入部件
QSpinBox
QDoubleSpinBox
QComboBox
Date/Time
QDateEdit
QTimeEdit
QDateTimeEdit
QScrollBar
QSlider
QLineEdit
QTextEdit
QDial
反馈对话框
QInputDialog
QProgressDialog
QMessageBox
QErrorMessage
颜色/字体对话框
QColorDialog
QFontDialog
文件对话框
QFileDialog
打印对话框
QPageSetupDialog
QPrintDialog
第三章 创建主窗口
3.1 子类化QMainWindow
从MainWindow继承
通过setCentralWidget设定中心控件
QIcon
3.2 创建菜单和工具栏
MainWindow自带一个menuBar
menuBar添加menu
手动定义菜单action
Exit Action
menu添加Action
menu添加Action
menu添加分隔线
分隔线
收藏
收藏
0 条评论
下一页