PyQT学习记录(二)

PyQt5 程序基础解析

1
2
3
4
import sys
import time
from PyQt5.QtCore import *
from PyQt5.QtGui import *
  1. 导入sys模块,为了访问在sys.argv列cd cd 表中的那些命令行参数
  2. 导入time模块,使用time.sleep()
    1
    app = QApplication(sys.argv)
      每个PyQt GUI程序都必须有一个QApplication对象。这个对象会提供访问全局信息的能力,包括程序的目录、屏幕大小、程序运行在哪个屏幕上(对于多线程系统来说)。这个对象还还会提供后续会说到的事件循环。
      PyQt可以是是被一些自己的参数的,如 - geometry 和 - style 等,这些参数在QApplication的初始化文档中。

  调用app.exec_()会开始执行QApplication对象的事件循环,第一个事件就是绘制事件,调用QApplication.quit()方法会干净的结束该GUI程序,关闭所有已经打开的窗口,释放所占用的资源,然后退出程序。
  事件循环用伪代码展示就是这个样子:

1
2
3
4
5
6
while True:
event = getNextEvent()
if event:
if event == Terminates:
break
processEvent(Event)

  当用户与应用程序交互的时候,或是发生特定事情时,会在PyQt内部产生一个事件并将其添加到事件列表中去。

PyQt5布局

1. 绝对定位

  程序指定每个控件的位置和大小(以像素为单位)。
绝对定位有以下限制:
 - 如果我们调整窗口,控件的大小和位置不会改变
 - 在各种平台上应用程序看起来会不一样
 - 如果改变字体,我们的应用程序的布局就会改变
 - 如果我们决定改变我们的布局,我们必须完全重做我们的布局

2. 盒布局 Boxlayout

  我们使用QHBoxLayout和QVBoxLayout,来分别创建横向布局和纵向布局
  如果我们需要把两个按钮放在程序的右下角,创建这样的布局,我们只需要一个水平布局加一个垂直布局的盒子就可以了。再用弹性布局增加一点间隙。

3. 格栅布局

  最常用的还是栅格布局了。这种布局是把窗口分为行和列。创建和使用栅格布局,需要使用QGridLayout模块。

做了一个小型的demo

关于pyqt的更多知识,有空余时间的时候会继续补充。
项目地址: ncmdump
项目介绍: 原作者写出了ncm转换为MP3的基础版本,用这不是很方便,就用正在学习的pyrt做了一个初版的demo图形化界面,后续有时间继续优化