PyCharm+QT Designer整合

mac2022-06-30  23

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, QtWidgetsclass 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_())

  ———————————————— 版权声明:本文为博主「小小小辉happy」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_37193537/article/details/82153155

转载于:https://www.cnblogs.com/valorchang/p/11399498.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)