PyQt5入门(一)

您所在的位置:网站首页 pyqt5酷炫界面 PyQt5入门(一)

PyQt5入门(一)

#PyQt5入门(一)| 来源: 网络整理| 查看: 265

目录

 一.介绍

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到父进程。

import sys from PyQt5.QtWidgets import QApplication,QWidget if __name__=='__main__': # 创建QApplication实例 app=QApplication(sys.argv)#获取命令行参数 #创建一个窗口 w=QWidget() #设置窗口的尺寸 w.resize(400,200)#宽,高 #移动窗口左上角坐标,其实就移动了窗口 w.move(300,300) #设置窗口标题 w.setWindowTitle('first page') #显示窗口 w.show() ''' 进入程序主循环,循环扫描响应在窗口上的事件,让整个程序不会退出 通过exit函数确保主循环安全结束 ''' 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")



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3