部署 PyQt 5 开发环境

本文假设读者已经具备 Python 相关的基础知识,并不会介绍如何安装 Python,以及 pip 的使用方法。另外,我也是初学者,希望大家帮我指出错误,以求共同进步。

转载请注明出处:http://www.jianshu.com/u/5e6f798c903a
最后编辑时间:2017.12.06

1. 基本环境

关于 Anaconda:就目前而言,我尝试了的 Anaconda3-5.0.0-Windows-x86_64。但是由于某些未知的原因(或说是因为我的无知),其自带的 Qt Designer 总会在启动时给出错误提示。我尝试过重新安装整个 Anaconda3,但问题依旧无法解决。另外,我曾在 Anaconda3-4.4 下,成功运行过其自带的 Qt Designer。但当我更新了 Qt 相关的一些包后, Qt Designer 也给出了相同的错误提示。因此,建议作为初学者,尽量避免使用 Anaconda3-5.0.0。尽管上诉问题都可以通过自己努力的到解决,但是我们当前的目标是快速认识 Qt,而非不停的折腾开发环境。

2. 关于 pyuic

参考资料:Using Qt Designer

Qt Designer 使用 XML 格式的 .ui 文件储存 GUI 界面,但并不会生成任何 C++ / Python 代码。Qt 内含的 uic utility 用于从 .ui 文件生成用于创建 GUI 的 C++ 代码。Qt 还包含 QUiLoader 类,该类允许应用程序加载 .ui 文件,并动态创建相应的用户界面。

PyQt5 并没有打包 QUiLoader 类,而是包含了 uic Python 模块。 uic 模块一方面类似于 QUiLoader 类,可加载 .ui 文件,并动态创建用户界面。另一方面,也拥有和 uic utility 相似的功能, uic 模块也可用于从 .ui 文件生成用于创建 GUI 的 Python 代码。

PyQt5 的 pyuic5 程序是 uic 模块的命令行接口,我们在配置 PyCharm 时,便会用到该命令。
pyuic5 命令的语法如下:

pyuic5 [options] .ui-file

所有的命令行选项如下:

  • -h, --help:将帮助信息写入到 stdout
  • --version:将版本号写入到 stdout
  • -i <N>, --indent <N> :定义由 pyuic5 生成 Python 代码时,代码缩进的空格数 <N> 。如果 <N> 是 0 ,表示使用制表符缩进。默认值是 4。
  • -o<FILE>, --output <FILE> :由 pyuic5 生成的 Python 代码被写入到文件 <FILE>
  • -p, --preview :动态创建并显示 GUI。不会生成 Python 代码。
  • -x, --execute :生成的 Python 代码会包含一些附加代码,以保证整段代码可作为独立应用被执行时,同样可以创建并显示 GUI。也就是说附加代码保证了所生成的整个代码段可以独立运行,当我们使用 Eric6 编译 .ui 文件时,所得到的 Python 代码便会拥有这样的效果。
  • --import-from<PACKAGE> :在 5.6 版本中新加入的功能。使用 from <PACKAGE> import ... 导入资源模块,而不是使用 import ...
  • --from-imports :相当于指定 --import-from .
  • --resource-suffix<SUFFIX> :后缀 <SUFFIX> 会被追加到所有在 .ui 文件中被指定的资源文件的原始名称后。附加 <SUFFIX> 的新名称被用于由 pyrcc5 从资源文件生成的 Python 模块的名称。例如,如果在 .ui 文件中指定了名为 foo.qrc 的资源文件,那么该资源文件对应的 Python 模块的名称则是 foo_rc

注意:由pyuic5 生成的代码不能保证与较久版本的 PyQt5 兼容。但是,可以保证这些代码与较高版本的 PyQt5 相兼容。如果无法你无法控制用户所使用的 PyQt5 的版本,那么在安装过程中则应该运行 pyuic5 或调用 compileUi() 。另一种办法是分发 .ui 文件(可被作为资源文件的一部分),并在应用程序中动态加载 .ui 文件。

PyQt5.uic.pyuic.pypyuic5.exe 都是同一个对象,只是调用的方法不同。
pyuic5 可被直接调用,pyuic 则需通过 python 调用。

C:\Users\iwhal>python -m PyQt5.uic.pyuic --version
Python User Interface Compiler 5.9.2 for Qt version 5.9.3

C:\Users\iwhal>pyuic5 --version
Python User Interface Compiler 5.9.2 for Qt version 5.9.3

3. 关于 pyrcc

参考资料:PyQt5资源系统

  • PyQt5 资源系统:
    PyQt5 支持 Qt 的资源系统。这是一种将资源(如 icon 和翻译文件)嵌入到应用程序中的工具。利用资源系统在打包和分发资源会更加轻松。
    .qrc 资源集合文件是一个 XML 格式的文件,用于指定需要被嵌入到应用程序中的资源文件。应用程序会以冒号作为开头,通过资源文件的原始名称引用相应的文件。
    相关的完整描述(包括 .qrc 文件的格式),请参考 Qt 文档中的 Qt Resource System。
  • pyrcc5:
    PyQt5 的 pyrcc5 模块相当于 Qt 的 rcc utility,并且两者的使用方式完全相同。pyrcc5 会读取 .qrc 文件和资源文件,并生成相应的 Python 模块。只需要在应用程序中 import 相应的 Python 资源模块,便可以像使用原始文件一样,使用相应的资源。

4. 配置 PyCharm

这一小节我们会对 PyCharm 进行配置,使其更加适合作为 PyQt 的开发工具。
在 PyCharm 中依次选择:File -> Settings -> Tools -> External Tools
然后使用下图中的 “+” 号,逐个添加下列三个外部工具。

  1. Qt_Designer
  2. PyUIC
  3. Pyrcc
0x02 配置 PyCharm-00.png

配置 Qt_Designer

此工具用于调用 designer.exe ,请依照下图进行设置。
注意:类似 $ProjectFileDir$ 的宏变量可点击 Insert macro... 进行插入,同时也会看到相应宏变量的解释。

0x02 配置 PyCharm-01.png

配置 PyUIC

前面,我们已近介绍了 pyuic 模块,下面只需要按照命令语法进行配置即可。
下图的配置方式会生成额外的代码,方便对模块进行测试。
这种方式与通过 Eric6 编译形成的 .py 文件相同。
Parameters:-o Ui_$FileNameWithoutExtension$.py -x $FilePath$

0x02 配置 PyCharm-02.png

配置 Pyrcc

前面,我们已近介绍了 pyrcc 模块,这里只需要按照下图配置即可。

0x02 配置 PyCharm-03.png

5. Eric6

Eric 在 PyQt5 开发的过程中拥有一些比 Pycharm 更加便捷的特性,所以建议大家同时配置好这两个 IDE。

下载链接: eric-download

安装 Eric6

  • 首先请务必按照 “1. 基本环境” 中的内容配置好基本环境。
  • 安装 QScintilla:pip install qscintilla
  • 安装 eric6:将 eric6-17.09.zip 解压后,找到 eric6-17.09 目录下的 install.py ,双击安装。(这个版本自带汉化,无需安装额外的汉化包)
  • 启动 eric6:点击 eric6-17.09\eric 目录下的 eric6.pyw 便可启动 eric6 了。

配置 Eric6

首次打开 Eric 时,会提示需要配置,点击 “确定” 后,便会进入配置界面。

配置 自动完成:

请依照下图进行设置。

0x03 Eric6-00.png
0x03 Eric6-01.png

配置 API

请依照下图进行设置。
点击 “从已安装的 API 中添加” 便可选取相应的 API。按图所示,选择好相应的 API 后,还需点击 “编译 API”。


0x03 Eric6-02.png

配置 Qt

一般而言,Eric 会自动调用相关 “Qt 工具”,无需对此项进行配置。
但是如果你的 Eric 无法启动 designer.exe ,那么请在 Qt 工具 -> Tools Directory 中填入designer.exe 的绝对路径。由于我们已经通过 PyQt-tools 安装了 Qt Designer,designer.exe 通常会位于pyqt5-tools 包中。
我本机上的路径为 C:\Python36\Lib\site-packages\pyqt5-tools

0x03 Eric6-03.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342