pycharm中pyqt5使用方法_对中仪使用方法视频

pycharm中pyqt5使用方法_对中仪使用方法视频PyCharm中PyQt的使用方法一级目录二级目录三级目录一级目录二级目录三级目录

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

简单说明

PyQt是Python与Qt的融合,做为Python的一个模块使用,有很多工具包。且Qt Designer可以快速的搭建应用程序的前台界面、类似Visual Studio的拖放操作,且可以配合PyCharm使用,让Python的开发效率更上一层楼。

本文范例软件

本文的前提是安装好了PyCharm以及Python(以下是范例中使用的版本)

  • PyCharm Community Edition 2020.2.1 x64
  • Python 3.7.0 x32

安装PyQt及相关软件

pip install pyqt5
pip install pyqt5-tools
pip install pyqt5-stubs

如果慢的话可以改用清华及其它的镜像地址

pip install 安装包 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

PyCharm中设定:QtDesigner

完成后在PyCharm中设定QtDesigner以及PyUIC

  • QtDesigner
    在这里插入图片描述

Name、Program、Working directory分别填入

#名称方便调用
QtDesigner   
#你的designer文件地址
C:\Python\Python37-32\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 
#项目文件夹下ui文件夹内
$ProjectFileDir$\ui

PyCharm中设定: PyUIC (模块方式)

PyUIC这里有两种方式
一,以模块方式调用pyuci
在这里插入图片描述
Name、Program、 Arguments、Working directory分别填入

PyUIC
#python.exe位置
C:\Python\Python37-32\python.exe
#以模块方式调用pyuic将ui文件转换成py
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$_designed.py
#当前ui同目录下
$FileDir$

PyCharm中设定: PyUIC (直接使用)

PyUIC
#pyuic5.exe位置
C:\Python\Python37-32\Scripts\pyuic5.exe
#将ui文件转换成py、加了_designed在生成文件名后,用于区别
$FileName$ -o $FileNameWithoutExtension$_designed.py
#当前ui同目录下
$FileDir$

PyCharm中设定: PyRCC

什么是pyrcc?在Qt Designer中新增的资源文件名为qrc、将qrc转换成py用于程序使用,这就需要用到pyrcc5程序,配置如下
在这里插入图片描述
Name、Program、 Arguments、Working directory分别填入
(Description是描述:这里我是qrc to py)

PyRCC
C:\Python\Python37-32\Scripts\pyrcc5.exe
# 由于ui生成的py如果带有资源文件会默认 <资源文件名_rc的方式> 所以这里直接将生成_rc的文件名
$FileName$ -o $FileNameWithoutExtension$_rc.py
$FileDir$

在Qt Designer中新增资源文件

点击最左边的新建、增加前缀(虚拟目录)、并添加文件这里是ico
在这里插入图片描述
选择复制

在这里插入图片描述
资源保存后为myqrc.qrc文件名、这里将窗体的图标设定完保存ui文件,用之前的PyUIC转换ui 到 py
打开文件后发现、myqrc_rc
在这里插入图片描述
选中myqrc.qrc点击PyRCC、这也是在转换代码中加入rc的作用

在这里插入图片描述

总结一下


PyUIC是将设计界面的ui文件转换成py

如果还附带相关资源(ico、图片等等)、将产生qrc文件、PyRCC就是将qrc也转换成py文件的工具

最后程序调用:界面程序(ui转换的py)+资源程序(qrc转换的py)

配置完PyCharm

在这里插入图片描述

Tools中已经有快捷方式

在这里插入图片描述

打开Qt Designer则可以创建窗口,拖拽各种需要的控件

在这里插入图片描述

保存的地址便是上面加ui的文件夹

在这里插入图片描述

Qt Desinger中创建一个简单的界面

  • 新建一个按钮并改名、并修改窗口标题为mytest

在这里插入图片描述

保存为test.ui选中并且点选PyUIC、生成test_designed.py

在这里插入图片描述

A.如何使用这个生成的py文件呢? 直接使用

# 引用的模块
import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(110, 110, 181, 71))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "mytest"))
        self.pushButton.setText(_translate("Dialog", "测试一下"))


# 下面是新加的内容
if __name__ == "__main__":
    mypro = QtWidgets.QApplication(sys.argv)
    mywin = QtWidgets.QMainWindow()
    thisui = Ui_Dialog()
    thisui.setupUi(mywin)
    mywin.show()
    sys.exit(mypro.exec_())

除了import sys以及最后新加的代码,中间都没有变动

运行后如下图效果

在这里插入图片描述

代码有两处告警提示

一.删除未引用到的模块即可
在这里插入图片描述

二.Instance attribute pushButton defined outside init (提示在init之外定义实例变量、此处是程序自动生成的代码,此处定义并无不妥)

在这里插入图片描述
当然你也可以消除这个提示、选中Suppress for statement

在这里插入图片描述
会在代码前加一段# noinspection PyAttributeOutsideInit (注解)、此时消除了所有错误

在这里插入图片描述

B.如何使用这个生成的py文件呢? 继承方式

import sys
# test_designed是文件名
import test_designed
from PyQt5 import QtWidgets


class RunTest(test_designed.Ui_Dialog):
    def __init__(self, myinherit):
        test_designed.Ui_Dialog.setupUi(self, myinherit)


if __name__ == "__main__":
    mypro = QtWidgets.QApplication(sys.argv)
    mywin = QtWidgets.QMainWindow()
    RunTest(mywin)
    mywin.show()
    sys.exit(mypro.exec_())

引用中错误的处理方式

在这里插入图片描述

右键在文件所属的文件夹中、选中Sources Root

在这里插入图片描述

文件夹将变色(灰色–淡蓝色)、并且错误消失

在这里插入图片描述

选择Suppress for statement也可消除提示

在这里插入图片描述

题外话、修正自动生成的代码

原ui生成的py代码test_designed.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(110, 110, 181, 71))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "mytest"))
        self.pushButton.setText(_translate("Dialog", "测试一下"))

test_designed.py改成

from PyQt5 import QtCore, QtWidgets


class Ui_Dialog(object):
    def __init__(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(110, 110, 181, 71))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "mytest"))
        self.pushButton.setText(_translate("Dialog", "测试一下"))

则引用的文件修正为using_test_designed.py

import sys
# noinspection PyUnresolvedReferences
import test_designed
from PyQt5 import QtWidgets


class RunTest(test_designed.Ui_Dialog):
    def __init__(self, myinherit):
        test_designed.Ui_Dialog.__init__(self, myinherit)
        # 上下两段代码有相同的效果
        # super(RunTest, self).__init__(myinherit)


if __name__ == "__main__":
    mypro = QtWidgets.QApplication(sys.argv)
    mywin = QtWidgets.QMainWindow()
    RunTest(mywin)
    mywin.show()
    sys.exit(mypro.exec_())

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175435.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vs2015激活成功教程密钥_vs2015产品激活密钥

    vs2015激活成功教程密钥_vs2015产品激活密钥对于开发者而言,一款优秀智能的开发工具能够提升应用开发的效率,正因为如此,VisualStudio作为主流的开发工具,微软非常的用心,不仅能够让这款开发工具满足用户体验的需要,同时能够支持更多的新技术架构,并且,VS2012更加适合用于开发Windows8专用程序。网上好多无效的,为了收藏,先保存一份。一、VS2012下载地址。中文版:http://download….

    2022年10月14日
    2
  • 虚拟机连接上网的步骤「建议收藏」

    虚拟机连接上网的步骤「建议收藏」1.首先查看本机的可上网的IP地址:我的本机IP地址是192.168.1.5,由此可以推出我的网关地址就是192.168.1.1这个网关就是可以用来访问的一个地址,一般子网掩码都是255.255.255.02.设置本机的Vmare8的IP为静态IP和并且一定要配到这个192.168.1.1这个网关下右键其属性配成对用的网关地址,一定要在一个网段内下面是虚拟机里面的配置,里面有个虚拟机网络编辑这个是可供虚拟机上网的网段,一定要在这个范围之内这个配置完之后

    2022年5月19日
    72
  • Python翻译Excel文件

    Python翻译Excel文件朋友需要翻译大量 Excel 文件内容 看我是否能搭把手 我的思路很简单 就是将 Excel 文件内容读出后 调用翻译软件的 API 然后再爬回翻译好的内容 写入 Excel 读取 Excel 文件内容的方法 我这里要处理的是 xlsx 文件 可以 importopenpy 如果要处理 xls 文件 就不能用这个 而是 importxlrd 或者先将 xks 文件转为 xlsx 文件再使用本文代码 具体这两个包提

    2025年10月4日
    2
  • leavecriticalsection报错_sequence的用法

    leavecriticalsection报错_sequence的用法线程锁的概念函数EnterCriticalSection和LeaveCriticalSection的用法注:使用结构CRITICAL_SECTION需加入头文件#include“afxmt.h”定义一个全局的锁CRITICAL_SECTION的实例和一个静态全局变量CRITICAL_SECTIONcs;//可以理解为锁定一个资源statici

    2022年9月20日
    2
  • UVA 11490 – Just Another Problem(数论)

    UVA 11490 – Just Another Problem(数论)

    2022年1月19日
    43
  • centos7搭建nfs详细步骤(有哪些免费的服务器)

    【1】NFS简介:        1.NFS是NetworkFileSystem的简称,即网络文件系统        2.NFS是一种分布式文件系统,可以在不同的操作系统间共享文件        3.NFS基于TCP/IP协议,可将远程计算机磁盘挂载到本地        4.NFS在文件或信息传送过程中依赖于RPC(RemoteProcedureCall)协议,不论是服务端还是客户…

    2022年4月13日
    83

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号