安裝
為避免不兼容,均使用pip方式安裝
Python安裝
開發環境:
python3.5.2 64
win10 64bit
PyQt安裝
pip install PyQt5
3.測試是否安裝成功
import PyQt5
沒報錯說明安裝成功
Eric6安裝
可pip或源碼安裝
Eric6官網:http://eric-ide.python-projects.org/eric-download.html
1.安裝依賴:pip install QScintilla
2.下載:eric6-17.03.1.zip並解壓,找到install.py文件打開方式改為剛剛安裝的python程序

3.安裝:然后雙擊該文件

4,啟動:然后找到...python\Lib\site-packages\eric6目錄下的eric6.py文件,雙擊啟動eric6

配置Eric6
如果沒有自動彈出配置窗口的話自己手動打開配置窗口:設置->首選項。

示例
建立項目
打開Eric6,菜單欄中選擇項目-新建
添加項目名稱並創立項目目錄


在打開的選擇項目文件夾對話框中右鍵點擊空白處,在彈出的菜單中選擇新建-文件夾

回到之前的界面,點"OK"



觀察程序主界面的標題欄發現顯示Hello – eric6。在項目瀏覽器的頂部源代碼標簽里自動為我們生成一個_init_.py文件,該文件中沒有任何代碼,我們不用去理會。

創建窗體
點擊源代碼標簽右邊的窗體標簽,在標簽下面的空白處右鍵點擊,彈出的菜單選擇新建窗體

彈出新建窗體對話框,可以選擇其它窗體類型,這里我們使用默認對話框類型,點擊OK按鈕

給窗體命名,雙擊窗體也是這個錯誤


pip install PyQt5-tools -i https://pypi.douban.com/simple # Python\Python35-32\Lib\site-packages\目錄下新增一個pyqt5-tools文件夾
把目錄pyqt5-tools文件夾下的兩個文件拷貝到目python35\Lib\site-packages\PyQt5\Qt\bin

設計窗體
雙擊窗體,計算機會直接打開Qt設計師,並自動將HelloWindow.ui加載到程序中






配置Pycharm
配置環境
settings->tools->external tools

D:\app\python3\Lib\site-packages\pyqt5-tools\designer.exe $ProjectFileDir$

D:\app\python3\python.exe -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py $FileDir$

D:\app\python3\Scripts\pyrcc5.exe $FileName$ -o $FileNameWithoutExtension$_rc.py D:\app\python3\Scripts

示例2


# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'D:\data\QtProject\test\test.ui' # # Created by: PyQt5 UI code generator 5.9 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(582, 374) Dialog.setSizeGripEnabled(True) self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(200, 90, 81, 18)) self.label.setObjectName("label") self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(90, 230, 112, 34)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Dialog) self.pushButton_2.setGeometry(QtCore.QRect(300, 230, 112, 34)) self.pushButton_2.setObjectName("pushButton_2") self.retranslateUi(Dialog) self.pushButton_2.clicked.connect(Dialog.close) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "顯示")) self.pushButton.setText(_translate("Dialog", "確定")) self.pushButton_2.setText(_translate("Dialog", "關閉")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_())
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.9 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(582, 374) Dialog.setSizeGripEnabled(True) self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(200, 90, 81, 18)) self.label.setObjectName("label") self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(90, 230, 112, 34)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Dialog) self.pushButton_2.setGeometry(QtCore.QRect(300, 230, 112, 34)) self.pushButton_2.setObjectName("pushButton_2") self.retranslateUi(Dialog) self.pushButton_2.clicked.connect(Dialog.close) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "顯示")) self.pushButton.setText(_translate("Dialog", "確定")) self.pushButton_2.setText(_translate("Dialog", "關閉"))
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.9 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(582, 374) Dialog.setSizeGripEnabled(True) self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(200, 90, 81, 18)) self.label.setObjectName("label") self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(90, 230, 112, 34)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Dialog) self.pushButton_2.setGeometry(QtCore.QRect(300, 230, 112, 34)) self.pushButton_2.setObjectName("pushButton_2") self.retranslateUi(Dialog) self.pushButton_2.clicked.connect(Dialog.close) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "顯示")) self.pushButton.setText(_translate("Dialog", "確定")) self.pushButton_2.setText(_translate("Dialog", "關閉")) class W(QtWidgets.QDialog, Ui_Dialog): # 繼承實現類和QDialog類,以后eric代碼移植到pycharm只需要改這兩處 def __init__(self): super().__init__() self.setupUi(self) # 調用Ui_Dialog類的方法 if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) w = W() w.show() sys.exit(app.exec_()) #eric代碼 # if __name__ == "__main__": # import sys # app = QtWidgets.QApplication(sys.argv) # Dialog = QtWidgets.QDialog() # 這里放到W繼承類 # ui = Ui_Dialog() # ui.setupUi(Dialog) # Dialog.show() # sys.exit(app.exec_())
總結
eric有個問題: 智能提示很louw很難用(放棄eric編碼)
PyCharm有三個問題:
1.只有類代碼沒有調用代碼(eric生成的python調用代碼,復制到pycharm)
2.pycharm停止運行,extratool調用的Qt會關閉(手動啟動Qt)
3.pycharm每次把ui轉換為py文件會覆蓋上次內容(因此調用代碼要和類代碼分開,被調用代碼放到包目錄下)
總結:
啟動eric建立ui文件然后編譯運行,復制ui文件和py調用代碼分別到pycharm包目錄和main.py
手動啟動Qt打開pycharm下的ui文件
關閉eric
