PyCharm+QT Designer整合


CMD下使用pip安裝PyQt4或者PYQT5

這里要注意,你下載的PYQT5不包含QT designer

還要:pip3 install PyQt5-tools,好像Pyqt5中將designer分離了或者查看源碼:https://github.com/altendky/pyqt5-tools,編譯安裝

將QT Designer整合到PyCharm的External Tools中,以后就可以非常方便的調用QT Designer工具了。

添加QTDesgner Tool

打開PyCharm的Settings: 

 Search “tools” & select “External Tools” 

點擊”+” 號,添加QT Designer External Tools 
注意:$FileDir$ 變量可以從Insert macro中選擇 ,也可以手寫

名字隨意起,主要是能找到PyQt4下的designer.exe文件,工作目錄則是$FileDir$,意思為當前文件所在目錄

添加PyUIC Tool

這個Tool能夠將QT Designer生成的.ui文件轉化為.py文件。 
主要是通過QT指令來實現的:

-m PyQt4.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 

當然也可以在commands prompt中使用這條指令。

或者例如:pyuic4.exe -o ui_Login.py Login.ui(我一般用這個)把Login.ui 生成ui_Login.py文件

 

 

配置如圖,名稱:自定義。
程序欄寫入python所在目錄下的python.exe文件。參數則是:-m PyQt4.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py
就是生成一個與當前操作文件相同名字的python文件。(如若用的是PyQT5,將數字4換成5即可,其他無需動)
工作目錄則是$FileDir$,意思為當前文件所在目錄

點擊tools文件下的External Tools會出現剛剛添加的擴展工具

 

練習使用:
使用designer,
點擊tools文件下的External Tools會出現剛剛添加的擴展工具(或者找到PyQt4中的designer.exe文件,雙擊打開)


 
         
直接出現designer界面:

 

設計了一個簡單的登陸窗口,文件名為Login.ui,如圖(如何設計后文介紹): 

 

 

將.ui文件生成.py文件: 

第一種方式:
命令行中輸入如下命令 pyuic5.exe -o ui_Login.py Login.ui處理完成后會在同目錄下生成問價ui_Login.py
第二種方式:
將Login.ui添加到pycharm中,點擊Login.ui(即選中)只后在擴張工具中找到PyUIC,點擊之后就會在同級目錄下生成ui_Login.py文件,如圖:

 

使用Pycharm,pyuic將.ui文件轉換為.py文件時要刪除三行ui代碼
MainWindow.setCentralWidget(self.centralwidget)、  
MainWindow.setMenuBar(self.menubar)、   
MainWindow.setStatusBar(self.statusbar)
而且要增加代碼:
1
2
3
4
5
6
7
8
if  __name__ = = "__main__"
     import  sys 
     app = QtWidgets.QApplication(sys.argv) 
     widget = QtWidgets.QWidget() 
     ui = Ui_MainWindow() 
     ui.setupUi(widget) 
     widget.show() 
     sys.exit(app.exec_())
只有就可以直接運行代碼
ui_Login源代碼(如果安裝pyqt4,即可直接運行):
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:\Users\Administrator\Desktop\Login.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# 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(597, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(70, 80, 54, 12))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(70, 160, 54, 12))
        self.label_2.setObjectName("label_2")
        self.lineEditUser = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEditUser.setGeometry(QtCore.QRect(270, 70, 113, 20))
        self.lineEditUser.setObjectName("lineEditUser")
        self.lineEditPassword = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEditPassword.setGeometry(QtCore.QRect(270, 150, 113, 20))
        self.lineEditPassword.setObjectName("lineEditPassword")
        self.pushButtonOK = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonOK.setGeometry(QtCore.QRect(160, 250, 75, 23))
        self.pushButtonOK.setObjectName("pushButtonOK")
        self.pushButtonCancel = QtWidgets.QPushButton(self.centralwidget)
        self.pushButtonCancel.setGeometry(QtCore.QRect(280, 250, 75, 23))
        self.pushButtonCancel.setObjectName("pushButtonCancel")
        self.labelTips = QtWidgets.QLabel(self.centralwidget)
        self.labelTips.setGeometry(QtCore.QRect(70, 220, 54, 12))
        self.labelTips.setObjectName("labelTips")
        # MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 597, 23))
        self.menubar.setObjectName("menubar")
        # MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        # MainWindow.setStatusBar(self.statusbar)

        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", "用戶名"))
        self.label_2.setText(_translate("MainWindow", "密碼"))
        self.pushButtonOK.setText(_translate("MainWindow", "確定"))
        self.pushButtonCancel.setText(_translate("MainWindow", "取消"))
        self.labelTips.setText(_translate("MainWindow", "TextLabel"))
if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    widget=QtWidgets.QWidget()
    ui=Ui_MainWindow()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM