刚学 Python 的时候都是在文本编辑软件里面写,没有智能提示,效率实在底下,写项目当然要使用现代化的 IDE,PyCharm 是IntelliJ IDEA的 Python 版本,是一个非常优秀的 IDE。(PS:我的电脑快变成IntelliJ IDEA全家桶了)

所需软件:

  1. PyQt5
  2. PyCharm

PyQt5

首先需要提前装好 PyQt5,可参考:Python - Mac 下 PyQt5 环境搭建

PyCharm

配置 QtDesigner

这是个 Qt 的界面可视化工具,可以很方便的设计 UI,所见即所得。Designer 的位置Qt-5.5.1/5.5/clang_64/bin/Designer.app,我们可以在 PyCharm 中配置 Designer 的路径,这样就可以在 PyCharm 中快速启动 Designer 了。

  1. 打开 PyCharm 的设置
  2. 找到 Tools -> External Tools
  3. 点击 + -> Create Tool
  4. 配置如下图

配置 PyUIC

这个工具可以把 Qt Designer 的 UI 文件,转换成 Py 文件,这是个命令行工具。

1
python -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.
  1. 打开 PyCharm 的设置
  2. 找到 Tools -> External Tools
  3. 点击 + -> Create Tool
  4. Parameters:
    1
    -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.
  5. 配置如下图

使用

右键菜单中选择 External Tools 即可

使用 QtDesigner 做一个窗体程序

打开 QtDesigner

设计一个最简单的窗体,放置一个 Lable 控件

转换成 Py


HelloWorld.ui -> HelloWorld.py

HelloWorld.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'HelloWorld.ui'
#
# Created by: PyQt5 UI code generator 5.5.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(640, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(260, 180, 81, 21))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 22))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Hello, World"))

编写 main.py

main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
import HelloWorld

from PyQt5.QtWidgets import QApplication, QMainWindow

if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()

ui = HelloWorld.Ui_MainWindow()
ui.setupUi(MainWindow)

MainWindow.show()
sys.exit(app.exec_())

运行