当前位置:   article > 正文

PyQt5入门(一)

pyqt5

目录

 一.介绍

1.建议

二.简述

1.QApplication

2. sys.exit(app.exec_())

三.安装与外部工具的设置

四. 将.ui文件转化成.py文件

1.法一(命令行)

2.法二(配置PYUCI插件)


 一.介绍

 

当一个应用的UI(user interface 用户交互界面)比较复杂的时候,命令行方式就不便用户使用了,这时我们需要图形
界面。
如果用Python语言开发跨平台的图形界面的程序,主要有3种选择:


●Tkinter
Python官方采用的标准库,优点是开源、稳定,发布程序较小,缺点是控件相对较少。


●wxPython
基于wxWidgets,优点是开源、控件比较丰富,缺点是稳定性相对差点,文档少,用户少。


●PySide2、 PyQt5
基于Qt的Python库,优点是控件比较丰富、跨平台体验好、文档完善、用户多。
缺点是库比较大,发布出来的程序比较大。

不是开源的,所以看不到源码。

其中PySide2是Qt官方开发的,是亲儿子,而PyQt5是另一个组织开发的,是干儿子。以后发展的话肯定是PySide2会越来越茁壮,但PyQt5的用户也不要担心,很多情况下,PyQt5代码向PySide2的转变就是导包名称的变化而已。

1.建议

博主的建议是,如果大家要开发小工具,界面比较简单,可以采用Tkinter.
如果是发布功能比较多的正式产品,采用基于Qt的PySide2、PyQt5

因为环境我早已经有了,所以这里就直接跳了,我py用的是anaconda,里面pyqt5的库都带了。

QApplication和QWidget分别代表整个应用程序和一个窗口。

二.简述

1.QApplication

QApplication 类管理图形用户界面应用程序的控制流和主要设置。 可以说 QApplication是Qt的整个后台管理的命脉

它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。

对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。

QApplication 对象是可以通过全局变量qApp访问。

argc和argv是命令行传进去的参数。比如linux里输入一个命令
cp file.c file1.c
那么argc=3 argv就是上面那行字符串数组。
因为图形编程有时也需要从命令行传递参数给程序,所以才会有argc和argv。

2. sys.exit(app.exec_())

1.app.exec_()的作用是运行主循环,必须调用此函数才能开始事件处理,调用该方法进入程序的主循环直到调用exit()结束。主事件循环从窗口系统接收事件,并将其分派给应用程序小部件。如果没有该方法,那么在运行的时候还没有进入程序的主循环就直接结束了,所以运行的时候窗口会闪退。

app.exec_()在退出时会返回状态代码

2.不用sys.exit(app.exec_()),只使用app.exec_(),程序也可以正常运行,但是关闭窗口后进程却不会退出。

sys.exit(n)的作用是退出应用程序并返回n到父进程。

  1. import sys
  2. from PyQt5.QtWidgets import QApplication,QWidget
  3. if __name__=='__main__':
  4. # 创建QApplication实例
  5. app=QApplication(sys.argv)#获取命令行参数
  6. #创建一个窗口
  7. w=QWidget()
  8. #设置窗口的尺寸
  9. w.resize(400,200)#宽,高
  10. #移动窗口左上角坐标,其实就移动了窗口
  11. w.move(300,300)
  12. #设置窗口标题
  13. w.setWindowTitle('first page')
  14. #显示窗口
  15. w.show()
  16. '''
  17. 进入程序主循环,循环扫描响应在窗口上的事件,让整个程序不会退出
  18. 通过exit函数确保主循环安全结束
  19. '''
  20. sys.exit(app.exec_())

运行结果:

三.安装与外部工具的设置

可视化工具 Qt designer的安装我就跳了,可以安装Qt(比anaconda大),而且anaconda自带了一个designer.exe,所以我就不下了, 苹果系统我就不说了,windows下在anaconda的library->bin下

但每次启动designer都从anaconda里找的话太麻烦,下面通过扩展工具来实现在pycharm直接启动designer

文件->设置->工具(最后一个)->外部工具

然后连着俩确定就完成了。

右键像下面那样找到启动就OK了,或者最上面一行Tools->External Tools里启动也行

 启动之后报了拒绝访问的错误,如下:

发现路径不完整,要精确到exe文件才行!!!!!

之后,启动成功!

今天实训在教室玩了一上午,中途睡了一会,应该是昨天冻着了,昨晚躺在床上身上阵阵发冷,现在感觉有点活过来了,敲一波。

Spacer是间隔控件

四. 将.ui文件转化成.py文件

1.法一(命令行)

示例:先在qt里随便拖几个控件,另存到pycharm的工作路径(右键你的py包,选择复制路径)下,把路径粘帖上,最后加上文件名就OK了。

可以看到已经存入

然后命令行下输入python -m PyQt5.uic.pyuic ui_test.ui -o ui_test.py

报错如下:

我将anaconda的环境变量调整到python的前面还是不行,参考这篇博客,可能我的anaconda环境还没激活,在pycharm的命令行下切换到anaconda的安装路径下的Scripts中,执行activate命令即可。

然后再回到工作目录执行刚才的命令即可。

转换成功!

2.法二(配置PYUCI插件)

相较于法一,还是法二更加方便些。

在anaconda的安装路径下\pkgs\pyqt-5.9.2-py37h6538335_2\Library\bin 里面有个pyuic5.bat文件,也就是可以直接用此命令将.ui文件转化为.py文件。

windows下添加外部工具(操作和上面差不多,参数配置略有不同)

pyuic配置:
program: python解释器(就是anaconda的安装路径下的python.exe路径)
arguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
working directory: $FileDir$($FileDir$是在当前目录下将.ui文件生成.py文件,而$ProjectFileDir$是在总目录树下生成,这时就会产生空文件夹的报错问题。如果用后者的话就会遇到常见问题Error: No such file or directory: "ui_test.ui"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/913532
推荐阅读
相关标签
  

闽ICP备14008679号