Pycharm+qt-tools搭建界面实现界面交互

这篇具有很好参考价值的文章主要介绍了Pycharm+qt-tools搭建界面实现界面交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Pycharm+qt-tools搭建界面实现界面交互

  • pycharm跑demo时一般通过cv2或者plt进行可视化,但也常常面临界面交互需求
  • 刚好pycharm支持qt插件进行界面开发功能
  • 下面讲述qt-tools的安装与使用

1.工具安装与配置

  • 安装
    在pycharm中打开命令行窗口进入环境进行安装:
#新建虚拟环境/或者打开现有环境
pip install PyQt5
pip install PyQt5-tools

Pycharm+qt-tools搭建界面实现界面交互

  • 环境配置

Pycharm -> file -> settings -> Tools -> Exteenal Tools
需要绑定已安装的qt中.exe路径,可通过环境下路径中搜索获取具体路径:

Pycharm+qt-tools搭建界面实现界面交互
开始配置 –>
Pycharm+qt-tools搭建界面实现界面交互
Pycharm+qt-tools搭建界面实现界面交互

#对应第一个工具(qtdesigner)所要填写的位置
$ProjectFileDir$    

#分别对应第二个工具(pyuic)两个填写的地方
-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py
$FileDir$
  • 在Tools中点击pyqt将会跳转至qt-designer开发界面:Pycharm+qt-tools搭建界面实现界面交互
    新建MainWindow界面并编辑界面后保存会生成.ui文件
    Pycharm+qt-tools搭建界面实现界面交互
  • 若为编辑好的界面,则只需右键.ui然后选择Exernel Tools -> pyqt打开即可:
    最近的 中选择已有ui即可打开
    Pycharm+qt-tools搭建界面实现界面交互
  • 右键.ui文件,然后选择Exernel Tools -> pyuic将生成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.

import sys
import cv2
# 导入所需库
import numpy as np
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QFileInfo
from PyQt5.QtWidgets import QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(805, 481)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 40, 491, 351))
        self.label.setStyleSheet("background-color: rgb(193, 193, 193);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(530, 70, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(660, 70, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(530, 120, 75, 23))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(530, 170, 91, 23))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(660, 170, 91, 23))
        self.pushButton_5.setObjectName("pushButton_5")
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.doubleSpinBox.setGeometry(QtCore.QRect(660, 120, 62, 22))
        self.doubleSpinBox.setObjectName("doubleSpinBox")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(530, 210, 241, 192))
        self.textBrowser.setObjectName("textBrowser")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(520, 10, 251, 41))
        self.label_2.setStyleSheet("font: 18pt \"微软雅黑\";\n"
"background-color: rgb(85, 170, 255);")
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 805, 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)

        self.pushButton.clicked.connect(self.openfile)


    # 打开文件
    def openfile(self):
        global fname

        # 定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)
            return cv_img

        fname, imgType = QFileDialog.getOpenFileName(None, "打开图片", "", "*;;*.png;;All Files(*)")
        img = cv_imread(fname)  # opencv读取图片
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC)  # 用cv2.resize设置图片大小
        self.img_o = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label.setPixmap(jpg_out)  # 设置图片显示
        self.label.set

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "打开图像"))
        self.pushButton_2.setText(_translate("MainWindow", "提取特征点"))
        self.pushButton_3.setText(_translate("MainWindow", "转换度量"))
        self.pushButton_4.setText(_translate("MainWindow", "找出制动位置"))
        self.pushButton_5.setText(_translate("MainWindow", "计算制动距离"))
        self.label_2.setText(_translate("MainWindow", "    图像处理demo"))


if __name__== "__main__":

    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

Pycharm+qt-tools搭建界面实现界面交互

2.添加算法模块

  • 尝试打开图像
    首先给按钮加信号:
 self.pushButton.clicked.connect(self.openfile)

Pycharm+qt-tools搭建界面实现界面交互
补全函数:

# 打开文件
    def openfile(self):
        global fname

        # 定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)
            return cv_img

        fname, imgType = QFileDialog.getOpenFileName(None, "打开图片", "", "*;;*.png;;All Files(*)")
        img = cv_imread(fname)  # opencv读取图片
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC)  # 用cv2.resize设置图片大小
        self.img_o = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label.setPixmap(jpg_out)  # 设置图片显示
        self.label.setScaledContents(True)

Pycharm+qt-tools搭建界面实现界面交互

  • 目标检测:
    def ftdect(self):
        cen_p,_points,mask=test_0.featuredetect(self.src)
        self.imgdetect= cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.imgdetect[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label.setPixmap(jpg_out)  # 设置图片显示
        self.label.setScaledContents(True)

Pycharm+qt-tools搭建界面实现界面交互

3.设置控件布局随界面一起缩放

  • 如下图所示,设置自动缩放主要有两步:

    • 1.将不同的空间分别按照水平、垂直、网格布局等进行顺序排列,并通过右下角的layouStretch设置控件间的间隔,最后需将所有控件设置同一个水平或者垂直布局
    • 2.右击页面空白处,选择栅格布局,即可实现自动缩放
      Pycharm+qt-tools搭建界面实现界面交互
  • 效果如下:
    Pycharm+qt-tools搭建界面实现界面交互

  • 一个很好的例程:
    PyQt5高速入门(图像处理界面),期末作业小帮手(下)文章来源地址https://www.toymoban.com/news/detail-403065.html

到了这里,关于Pycharm+qt-tools搭建界面实现界面交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT练手小项目-——天气播报小狗(ui展示分析,构造实现,json格式数据分析,界面交互,天气图标处理,小狗语音)

    前言         经过之前一段时间的QT学习,做出一个小软件来总结自己掌握关于qt的知识点。网络上有许多免费的天气接口(api),有xml格式的,也有json格式的。具体xml和json有什么区别,这里我就不去深究了,我们这里用的是一个json格式的数据,所以 重点是对json格式的数据

    2023年04月17日
    浏览(75)
  • 基于MATLAB App搭建STM32用户交互界面(1)——MATLAB与STM32串口通讯的实现

            最近几个月,DIY了块板子,选用的芯片是STM32F407,该板子与上位机(也就是电脑)的通讯方式有两种,一是用串口发送程序进程数据,二是用网口发送原始数据。在调试时,需要用XCOM接收串口信息、用XNET接收网口信息。由于这块板子是用来学术研究的,数据每次

    2024年02月09日
    浏览(46)
  • Coin3d环境搭建(VS2019+QT),实现基于Open Inventor机器人图形交互

    先下载VS2019下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)    这里点下载然后界面拖到最下点击较早的下载项      下载这个2019社区版的,下载好后勾选python开发和使用C++的桌面  然后下载QTIndex of /archive/qt,点这个5.12,然后点5.12.4,下3.6G的   ,   然后QT下载

    2024年02月10日
    浏览(39)
  • Qt Creator可视化交互界面exe快速入门1

    Qt的安装链接:Index of /archive/qt 5.14版本之前都是可以直接 离线安装,即下载完整安装包之后在本地安装。 最新及5,15版本之后的都不支持直接的离线安装了,需要通过下载器来进行安装。下载地址:Index of /official_releases/online_installers

    2024年02月04日
    浏览(41)
  • 【Python之Pyside】如何在pycharm中使用pyside开发编辑Qt ui界面(uic、rcc)

    qtcreator自带designer设计师编辑器,非常好用。 但是我们使用pycharm进行界面开发的时候没有designer,在pycharm中直接双击qt的ui文件会直接进行xml格式的编辑。 要在pycharm中支持双击ui文件打开qtdesigner,我们需要先 在pycharm中添加安装了pyside6的python环境,注意,安装pyqt5不支持,旧

    2024年04月12日
    浏览(36)
  • 【五一创作】VS+Qt主界面内嵌自定义控件的四种方法以及不同自定义控件数据交互

    在Qt界面开发过程中,一个主界面或者主窗口看成是各个控件排列组合后的集合,对于一些项目而言,有些常用的控件可以封装成自己想要的控件样式并且复用,比如说,log显示控件,图像/视频显示控件等,可以将常用的控件代码封装起来,以便下次复用,内嵌在不同的主界

    2024年02月11日
    浏览(61)
  • 如何在pycharm里边配置pyqt5、qt5-applications,使用拖拽功能设计UI界面

    安装pyqt5和qt5-applications 网上很多说要安装pyqt5-tools,但是里边并没有找到designer.exe这个文件,最终是在qt5-applications里边的Qt/bin找到了designer.exe文件。 在pycharm中配置designer working directory可以自己手动配置工程目录,也可以直接点击后面的按钮选择$ProjectFileDir$ 在pycharm中配置p

    2024年02月02日
    浏览(43)
  • 使用PyQt简单实现YOLOv5交互界面

    可在过往博客查看,YOLO原理,以及具体训练过程 , 这篇文章是继续完善YOLO模型的使用,即将控制台cmd交互的YOLO5模型实现为交互界面可视化操作。我们前期已经搭建了一个QT框架,现在只要将具体函数与QT框架进行绑定即可。 个人建议直接将整个ui文件放置在YOLO5文件夹下,

    2024年02月08日
    浏览(46)
  • 【AutoJs】AutoJs实现用户界面交互的方式

    Auto.js 中渲染用户界面(UI)用于用户与系统交互有三种不同方式:UI、Floaty 和 Dialog,它们在用途和实现上有一些区别。下面各自介绍一下相应方法。 Dialog 模块用于显示各种对话框。对话框是一种弹出式窗口,通常用于与用户进行短期交互,例如显示警告、确认信息、输入文

    2024年02月04日
    浏览(42)
  • Qt (高仿Visio)流程图组件开发(七) 流程图 简单操作界面搭建

    Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思 Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制 Qt (高仿Visio)流程图组件开发(三) 图元基类如何定义,流程图多种图元类型实现 Qt (高仿Visio)流程图组件开发(四) 流程图 图元

    2023年04月25日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包