PyQt5学习笔记:1 基本流程与主窗口
2018-03-13 09:30
351 查看
一直沉迷工作,没时间写博客(借口?),最近公司休假,偷得浮生半日闲,把以前在Evernote上保存的笔记都分享出来,发表成博客,以共勉。
首先简单说一下,PyQt目前我用过的最好的GUI库,GTK3的Bug很多,MFC又晦涩又不能跨平台。我用的PyQt5.4.2+python3.4.3,用Eric6开发环境。不得不说,使用Eric6编译UI文件实在是太方便了。
好了下面从hello-world开始简单介绍:
1 先导入QT5中的QtWidgets通用窗口库。
2 自定义窗口类MyWnd,继承自QtWidgets.QWidget。
3 实例化一个MyWnd的对象mw,调用mw.show()。
4 固定套路,事件循环: sys.exit(app.exec_())。
下面是完整的代码(显示一个空白窗口):
----------------
下面再讲一下mainwindow一些用法:
1 在QT设计师里新建一个MainWindow窗口。
2 添加子菜单(逐级),并在右下角的动作编辑器里,为每个action重命名下。
注:此处有个概念需要澄清,对于菜单,每个项就是一个action,即QAction类。
3 添加图标资源,在右下角,点击资源浏览器,添加图标资源:
4 关联应用图标资源:
5 添加工具栏,如下,空白处右键:
然后在右下角的动作编辑器里,将某项拖拽到工具栏里。即可添加完成。
6 为MainWindow新建一个自定义的槽(如果你需要自定义槽的话):
使用自定义槽(当然如果你仅需要系统内置槽,上面步骤无需进行):
注意QAction类点击的信号是triggered而不是clicked。QAction根本没有此信号。
5 编译资源文件(.ui和.qrc):
>C:\Python34\Lib\site-packages\PyQt5\pyuic5.bat uwnd1.ui -o uwnd1.py
>C:\Python34\Lib\site-packages\PyQt5\pyrcc5.exe r_icons.qrc -o r_icons_rc.py (注意后缀_rc相当重要,因为uwnd1.py的最后一句会import它,不信打开看看)
然后新建一个main.py文件,输入:
运行此文件,即可得到预期的效果。也可以使用Ctrl+R快捷键。
最后结果如下:
可以看到此程序拥有菜单栏、工具栏、任务栏,其实各个操作还关联了快捷键,只是没法截图出来。
首先简单说一下,PyQt目前我用过的最好的GUI库,GTK3的Bug很多,MFC又晦涩又不能跨平台。我用的PyQt5.4.2+python3.4.3,用Eric6开发环境。不得不说,使用Eric6编译UI文件实在是太方便了。
好了下面从hello-world开始简单介绍:
1 先导入QT5中的QtWidgets通用窗口库。
2 自定义窗口类MyWnd,继承自QtWidgets.QWidget。
3 实例化一个MyWnd的对象mw,调用mw.show()。
4 固定套路,事件循环: sys.exit(app.exec_())。
下面是完整的代码(显示一个空白窗口):
import sys from PyQt5 import QtWidgets class MyWindow(QtWidgets.QWidget): def __init__(self): super(MyWindow, self).__init__() def startMe(): app = QtWidgets.QApplication(sys.argv) w = MyWindow() w.show() sys.exit(app.exec_()) if __name__ == "__main__": startMe()
----------------
下面再讲一下mainwindow一些用法:
1 在QT设计师里新建一个MainWindow窗口。
2 添加子菜单(逐级),并在右下角的动作编辑器里,为每个action重命名下。
注:此处有个概念需要澄清,对于菜单,每个项就是一个action,即QAction类。
3 添加图标资源,在右下角,点击资源浏览器,添加图标资源:
4 关联应用图标资源:
5 添加工具栏,如下,空白处右键:
然后在右下角的动作编辑器里,将某项拖拽到工具栏里。即可添加完成。
6 为MainWindow新建一个自定义的槽(如果你需要自定义槽的话):
使用自定义槽(当然如果你仅需要系统内置槽,上面步骤无需进行):
注意QAction类点击的信号是triggered而不是clicked。QAction根本没有此信号。
5 编译资源文件(.ui和.qrc):
>C:\Python34\Lib\site-packages\PyQt5\pyuic5.bat uwnd1.ui -o uwnd1.py
>C:\Python34\Lib\site-packages\PyQt5\pyrcc5.exe r_icons.qrc -o r_icons_rc.py (注意后缀_rc相当重要,因为uwnd1.py的最后一句会import它,不信打开看看)
然后新建一个main.py文件,输入:
from PyQt5 import QtWidgets, QtCore from uwnd1 import Ui_MainWindow from PyQt5.QtWidgets import QMainWindow,QMessageBox import sys class MyWnd(QMainWindow, Ui_MainWindow): def __init__(self): super(MyWnd, self).__init__() self.setupUi(self) def openmsg(self): res = QMessageBox.information(self, "打开", "U clicked.", QMessageBox.StandardButtons(QMessageBox.Yes)) # statusBar()是QMainWindow类自带的,首次运行此方法时,会自动检测状态栏是否存在并自动生成. self.statusBar().showMessage("状态栏: I am showing... ") def startMe(): app = QtWidgets.QApplication(sys.argv) dlg = MyWnd() dlg.show() sys.exit(app.exec_()) if __name__ == "__main__": startMe()
运行此文件,即可得到预期的效果。也可以使用Ctrl+R快捷键。
最后结果如下:
可以看到此程序拥有菜单栏、工具栏、任务栏,其实各个操作还关联了快捷键,只是没法截图出来。
相关文章推荐
- PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
- JAVA学习笔记-加载窗口_画图形_编程中坐标基本知识
- Nutch1.7学习笔记2:基本工作流程分析
- MFC学习笔记之:MFC最基本动作(如创建窗口,点击取消等)函数的执行顺序
- PyQt5学习笔记01----第一个窗口
- H.264 MV 学习笔记1:Inter Prediction 基本流程
- OpenGL学习笔记1:环境配置和基本流程
- SpringMVC学习笔记一:基本概念,执行流程与开发步骤
- PyQt5学习笔记12----主窗口动态加载Widget
- NDK学习笔记:动态链接库与静态链接库的基本使用流程简记
- CI框架学习笔记(一) - 环境安装、基本术语和框架流程
- VS2013MFC对话框工程学习笔记二 - 了结布局和一些基本的窗口组件
- [原创] Megaco基本呼叫流程 - VoIP(Megaco/H.248)学习笔记系列之一
- JAVA学习笔记:(三)基本绘图窗口
- SAP学习笔记(SD的基本流程) 2008-12-26
- 学习笔记:Linux驱动开发git基本使用流程
- OpenGLES入门笔记:Rajawali学习(2)场景绘制基本流程
- CI框架学习笔记(一) - 环境安装、基本术语和框架流程
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- Apache Flume学习笔记之一:基本概念和流程