pycharm配置Qt Designer工具的图文教程
作者:是小峰呀 发布时间:2021-02-10 05:56:40
之前一直使用QtCreator,在设计界面时非常方便,python早就集成了Qt模块,在python中以pyQt的包存在,目前常用的是pyQt5,但是在pycharm中却没有找到像QtCreator那样的编辑器,难道就只能通过代码进行界面编辑吗,那速度真是太慢了。不要慌,界面肯定是有的,而且非常方便,首先打开命令行安装pyqt包,命令如下
pip install PyQt5 -i https://pypi.doubanio.com/simple
pip install PyQt5-tools -i https://pypi.doubanio.com/simple
pip install paramiko -i https://pypi.doubanio.com/simple
pip install pyinstaller -i https://pypi.doubanio.com/simple
安装完了之后,下面就是在pycharm中配置qt designer
打开File,选择settings,然后找到External Tools,打开,第一次配置时界面如下
然后按照箭头所示的操作进行
如果使用的是Anaconda,可以参考我的目录进行配置,如果找不到designer.exe就在python的安装目录搜一下
然后是配置pyUIC,这个工具的作用是将UI文件转换为.py文件
下面这个文件时打包用的,在命令行的用法是pyinstaller -F test.py
下面的工具是将ico图标放在qrc文件中,然后转为py文件,用于生成打包后的图标
按照上面的步骤都安装完成之后,可以在Tools中找到External Tools,然后里面就是我们刚刚创建的四个工具的快捷方式。
下面就是测试我们的设计工具,在项目文件中右键,会出来下面的菜单,在菜单中按照指示依次选择
然后会打开如下的界面,第一次打开就是这个样子,与qt Creator非常之像,简直就是一个模子刻出来的,用法也基本相同,但是没有右键控件转到槽函数的功能,哈哈哈。
我们选择widget,然后创建一个新的UI文件,然后选择保存,保存的位置就是你的pycharm工程目录
简单的设计下面一个界面
然后关掉设计界面,回到pycharm,可以看到目录中多了一个UI文件
在UI文件中我们右键,然后选择External Tools
这时对应UI的python代码就已经生成,可以看到目录中多了一个与UI文件同名的py文件
内容如下
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'demo.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# 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_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1066, 796)
self.horizontalLayoutWidget = QtWidgets.QWidget(Form)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 1051, 80))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.openimg = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.openimg.setObjectName("openimg")
self.horizontalLayout.addWidget(self.openimg)
self.detect = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.detect.setObjectName("detect")
self.horizontalLayout.addWidget(self.detect)
self.closewindow = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.closewindow.setObjectName("closewindow")
self.horizontalLayout.addWidget(self.closewindow)
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(Form)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 90, 1051, 701))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
self.label.setObjectName("label")
self.horizontalLayout_2.addWidget(self.label)
self.retranslateUi(Form)
self.openimg.clicked.connect(Form.shouImg)
self.detect.clicked.connect(Form.edgeDetect)
self.closewindow.clicked.connect(Form.close)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.openimg.setText(_translate("Form", "打开图片"))
self.detect.setText(_translate("Form", "边缘检测"))
self.closewindow.setText(_translate("Form", "关闭窗口"))
self.label.setText(_translate("Form", "show Image"))
然后通过自建main函数进行调用,代码如下
from demo import Ui_Form
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QApplication, QMainWindow, QCheckBox
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtCore import *
from PyQt5.QtCore import pyqtSlot
import sys
import os
import cv2
import numpy as np
from PyQt5.QtGui import *
class MainWindow(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.setupUi(self)
# 打开图片按钮槽函数
def shouImg(self):
filePath = self.getFileDir()
img = cv2.imread(filePath[0][0])
img_dis = QImage(img, img.shape[1], img.shape[0], QImage.Format_RGB888)
# 加载图片,并设定图片大小
img_dis = QPixmap(img_dis).scaled(int(img.shape[1]), int(img.shape[0]))
width = img_dis.width() ##获取图片宽度
height = img_dis.height() ##获取图片高度
if width / self.label.width() >= height / self.label.height(): ##比较图片宽度与label宽度之比和图片高度与label高度之比
ratio = width / self.label.width()
else:
ratio = height / self.label.height()
new_width = int(width / ratio) ##定义新图片的宽和高
new_height = int(height / ratio)
new_img = img_dis.scaled(new_width, new_height) ##调整图片尺寸
# img_dis = QPixmap(img_dis).scaled(int(img.shape[1]), int(img.shape[0]))
self.label.setPixmap(new_img)
# 获取文件地址函数
def getFileDir(self):
try:
self.file_path = QFileDialog.getOpenFileNames(self, "select file", "./", "*.*")
except Exception as e:
print(e)
return self.file_path
def edgeDetect(self):
# 自己发挥
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
实验结果如下
来源:https://juejin.cn/post/7107603475545980942
猜你喜欢
- 在网络设备管理中,传输配置文件、镜像文件等是经常需要进行的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些
- 静态页面是蜘蛛喜欢的,会得到蜘蛛经常光顾的,以至于网站上的内容会得到搜索引擎更多的收录。这里介绍一个asp伪静态的程序实现方法数据库是acc
- MySQL出错代码列表:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库
- 如下所示:var myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一
- javascript曾一度被认为是玩具型的语言,因为它太容易上手,而且,javascript曾一度担任为web站点“打杂”的职责。直到Aja
- 1、从数据库表中检索信息实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息。select语句格式一般为:SELECT 检
- 今天继续给大家介绍Python相关知识,本文主要内容是Python asyncio异步编程常见问题。一、asyncio编程简单示例首先,我们
- 很多网友在经典论坛里说自己的网站为什么色彩上总是有问题,总是看起来没什么精神,没办法吸引人注意。小毅观察了一些网友们设计的网站发现他们在用色
- re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要
- 就目前互联网上大小网站而言,大部分都是采用ASP+ACCESS/SQL Server或者PHP+MySQL来编写;事实上,ASP和MySQL
- 网页设计遇到最大的麻烦之一莫过于网页对不同浏览器的兼容性问题了,因为IE 6.0 / IE 7.0 / firefox 2 / Opera
- 这篇文章主要介绍了Python三元运算与lambda表达式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 在开发和调试基于XML的应用的时候,程序员往往为找不到合适的快速桌面XPATH测试软件发愁。诚然,市面上有成套的XML编辑软件,但是它们往往
- demo中的p中的script改大或改小看看。。。移动到top的时间始终是一定的,你也可以设置一个阀值,在页面高度到达这个阀值之前,移动的总
- 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列(的一种结构
- 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScr
- 本文实例讲述了php+js实现的无刷新下载文件功能。分享给大家供大家参考,具体如下:服务器端页面步骤就是,设置头文件参数,然后读入并输出文件
- 在登陆界面中,通常,最重要的部分为登陆的Form表。一个非常棒的提升体验的做法是,在载入页面时自动聚焦到第一个提供用户输入的表单框,让用户不
- 1. 序言每年淘宝双十一的时候,总是要刷各种各样的浏览页面,收集能量或者喵币或者什么。那既然如此,我就总想着,能否通过Python自动调用的
- 由于工作中涉及到生日编辑资料编辑,然后自己改了一下代码:<html><head> <meta charset=