zoukankan      html  css  js  c++  java
  • 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:UsersAdministratorDesktopLogin.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_())
     
  • 相关阅读:
    WCF 限流 Throttling
    VS2010安装了Hide Main Menu 插件
    ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上
    UML面向对象分析设计
    我的WCF开发框架简化版及基于NET.TCP传输方式的实现
    一周最新示例代码回顾 (6/4–6/10)
    Windows Azure 上的托管服务CDN (下) Hosted Service
    计算机考研的调查和改进建议
    并发编程中的重重量级模型和轻量级模型
    JIRA_5_和GreenHopper5.9破解及汉化
  • 原文地址:https://www.cnblogs.com/mxhmxh/p/9550286.html
Copyright © 2011-2022 走看看