PyQt5入门(一) |
您所在的位置:网站首页 › 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.QApplicationQApplication 类管理图形用户界面应用程序的控制流和主要设置。 可以说 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 |