gui, graphical user interface
pyqt是qt为python专门提供的gui拓展,每一个pyqt控件都有其对应的qt控件
qt和pyqt的设计都是完全面向对象的
pyqt5在程序需要时才释放gil,pyqt4时执行完程序后强制释放gil
安装
pip install PyQt5 -i 镜像网站
pip install PyQt5-tools
设置环境变量
将help内容保存到txt
import sys
from PyQt5.QtWidgets import QWidget
out = sys.stdout #<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'> >>> type(out) <class '_io.TextIOWrapper'>
sys.stdout = open(r'D:\QWidget.txt' , 'w') #open以后,与cmd交互所返回的内容都会出现在缓冲区,而不会出现在cmd界面
help( QWidget ) #help查询返回的所有内容会被写入缓冲区,此时看txt的大小还是0KB
sys.stdout.close() #close以后,缓冲区的数据才会写入txt
sys.stdout = out #将最初的<class '_io.TextIOWrapper'>还给sys.stdout,否则再次调用sys.stdout会报错
在线文档Qt for Python Documentation — Qt for Python
安装eric6
C3 Qt Designer
designer.exe的位置在Python37\Lib\site-packages\QtDesigner
python 3.x - pyqt5-tools: designer.exe missing - Stack Overflow
As of pyqt5-tools v3 the package has been broken down into four pieces. The wrappers remain here but the plugins are located in pyqt5-plugins, some Qt application helpers in qt5-tools, and the applications are in qt5-applications.
main window主窗口,widget通用窗口
ctrl+r 预览
pyuic5 -o firstMainWin.py firstMainWin.ui
界面文件 与 逻辑文件 的分离
布局
快捷键ctrl+1 ctrl+2 等
层次:主窗口(main window或 widget)-> 布局(layout) -> 控件
container布局的本质还是用layout
绝对布局用geometry。 使用layout进行布局后,geometry将变灰不可用
插入Spacer表示layout之间不要彼此挨着 或 尽可能远离,以确保视觉效果。
可以用·Horizontal Line把主观认为不同类别的控件分开,以确保视觉效果。
minimumSize 和 maximumSize设置控件的最小最大尺寸
每个属性的右上侧有 还原默认 的按钮
sizePolicy
sizeHint指 控制的期望尺寸
可以设置各控件的伸展比例
开发流程
P92
设置伙伴(alt+键盘,光标快速定位到某个控件)
text+&,然后edit->编辑伙伴
不是所有控件都能设置伙伴
text是中文的控件无法设置
tab次序
edit
信号与槽
一般有三种方法:
一
可以edit->编辑信号与槽,直接控件连控件
但容易出现失误,这时可以在右下角窗口调整
二
界面文件.py直接写
三
eric的”生成对话框代码“生成的逻辑文件.py,改写
菜单栏
一级菜单,加&,即可用alt+快捷访问。(依然只支持英文)
子菜单,要在右下角 动作编辑器 或 属性编辑器的shortcut,设置快捷键
工具栏
右键->添加工具栏 后,得到菜单栏下面 空白的一行。
需要在右下角 动作编辑器 添加新动作,然后再把新动作拖进空白的工具栏行。
状态栏
会自动添加。 可以右键,移除
其他功能
designer自带的槽 只有少量功能,要实现 打开文件、打开子窗口等功能需要在 逻辑文件 自行添加。
打包资源文件
引用图片 有两种方法:
一
将资源文件 转换位python文件。 可以用designer实现
具体比较繁琐:见P116
eric->new resource 得到开发目录下的apprcc.qrc
designer->右下角 资源浏览器->选中apprcc.qrc->创建一个前缀->再在前缀里添加 资源
然后还要把 图片资源 添加到控件里:更改如label控件的pixmap属性
最后,把.qrc转换为.py文件
pyrcc5 apprcc.qrc -o apprcc_rc.py
二
code里路径引用