Python 如何在QtDesigner中制作导入图像的工具?

Python 如何在QtDesigner中制作导入图像的工具?,python,image,pyqt5,qt-designer,Python,Image,Pyqt5,Qt Designer,我想做一个按钮,我可以从文件夹中选择一个图像,然后在窗口中显示它。我希望这幅画有助于解决我的问题 我将告诉你该怎么做,首先你可以使用任何库来读取图像,我使用OpenCV是因为我以后会处理图像,在我的例子中,我读取一个包含一组图像的文件夹,但对于图像来说,概念是相同的。你必须做两件事: 第一: 将按钮与执行文件浏览器的方法相关联,在我的例子中,我使用了TK库提供的方法,但还有更多 第二: 文件浏览器提供的路径用于加载图像,然后该图像与GUI的标签关联,其方式在view\u image方法中指定 这

我想做一个按钮,我可以从文件夹中选择一个图像,然后在窗口中显示它。我希望这幅画有助于解决我的问题


我将告诉你该怎么做,首先你可以使用任何库来读取图像,我使用OpenCV是因为我以后会处理图像,在我的例子中,我读取一个包含一组图像的文件夹,但对于图像来说,概念是相同的。你必须做两件事:

第一: 将按钮与执行文件浏览器的方法相关联,在我的例子中,我使用了TK库提供的方法,但还有更多

第二: 文件浏览器提供的路径用于加载图像,然后该图像与GUI的标签关联,其方式在view\u image方法中指定

这就是基本的想法,您必须阅读文档并使其适应您的应用程序

import sys
import cv2
import select
import os
import pathlib
import shutil
from imutils import paths
import pickle

from PyQt5 import uic, QtWidgets, QtGui
from PyQt5.QtCore import QTimer
from PyQt5.QtCore import Qt,QSize
from PyQt5.QtGui import QImage
from PyQt5.QtGui import QIntValidator,QDoubleValidator
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QMessageBox,QListWidgetItem

from tkinter import filedialog
from imutils import paths
from operator import itemgetter, attrgetter

qtCreatorFile = "GUI.ui" 

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
    
    def __init__(self):

        QtWidgets.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.get_path_image_button.clicked.connect(self.get_images_dataset)
        self.view_image_button.clicked.connect(self.view_image)
        self.path_image = ''

    def get_images_dataset(self):
        root = Tk()
        root.withdraw()
        root.folder_name =  filedialog.askdirectory(
            title = 'Choose the directory of the input files'
            )

        self.path_dataset =root.folder_name
        if (root.folder_name):
            self.textBrowser.setText(
                '[INFO] Image directory path successfully uploaded'
                )
        else:
            self.textBrowser.setText(
                '[WARNING] No valid route selected'
                )
        root.destroy()

    def view_image(self):
        image_path = self.path_image 
        image = cv2.cvtColor(image_path, cv2.COLOR_BGR2RGB)
        height, width, channel = image.shape
        step = channel * width
        qImg = QImage(image.data, width, height, step, QImage.Format_RGB888)
        self.image_label.setPixmap(QPixmap.fromImage(qImg))
       
一个例子:

显然,这个结果与所附的代码不一致,但它只是一个示例


您所要求的与程序逻辑相关,设计器仅用于UI元素。创建一个带有QPushButton和QLabel的窗口,保存ui,然后按照官方指南了解如何使用pyuic生成输出文件,以及如何正确使用它,并在将导入它的新脚本上实现代码逻辑(实际上,使用一个新脚本,永远不要试图编辑pyuic生成的文件的内容,这被认为是非常糟糕的做法。混合使用tkinter和qt感觉很奇怪。是的,最好使用QFileDialog。我只是把我的代码放在上面hand@Andrewgmz如果Qt可以显示图像,为什么要使用opencv呢?在QLabel中显示图像只需:
self。image_label.setPixmap(QPixmap(image_路径))
我使用opencv处理图像,这只是代码的一部分,然后我对图像应用一系列过滤器,应用程序会在图像中找到突出的对象。但这是正确的,如果您只想在gui中显示图像,则不必使用opencv。只是问题不是很具体,我决定我想提出一个想法。