【问题标题】:how to load an image in label when button pressed PyQt5 [closed]按下按钮时如何在标签中加载图像PyQt5 [关闭]
【发布时间】:2019-02-17 17:53:04
【问题描述】:

我是 PyQt 编程新手,当我运行此代码然后按下按钮时,窗口总是没有响应。

第二个问题我如何在按下按钮时在标签中加载图像,我花了 3 个小时来得到一个问题但我没有得到答案:(( 在我的英语不好之前如何解决它和抱歉

import sys
import cv2
from PyQt5 import QtCore,QtWidgets
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QImage,QPixmap
from PyQt5.QtWidgets import QDialog,QApplication,QMainWindow
from PyQt5.uic import loadUi

class ShowImage (QMainWindow):
    def __init__(self):
        super(ShowImage,self).__init__()
        loadUi('ganteng.ui',self)
        self.image=None
        self.loadButton.clicked.connect(self.loadClicked)

@pyqtSlot()
def loadClicked(self):
    self.loadImage('2.jpg',cv2.IMREAD_GRAYSCALE)

def loadImage(self,Flname):
    self.image=cv2.imread(flname)
    self.displayImage()

def displayImage(self):
    qformat=QImage.Format_Indexed8

    if len(self.image.shape)==3:
        if (self.image.shape[2])==4:
            qformat=QImage.Format_RGBA8888

        else:
            qformat=QImage.Format_RGB888

            img=QImage(self.image,self.image.shape[1],self.image.shape[0],self.image.strides[0],qformat)
            img=img.rgbSwapped()

            self.imgLabel.serPixmap (QPixmap.fromImage(img))
            self.imgLabel.setAlignment (qtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter)

app=QtWidgets.QApplication(sys.argv)
window=ShowImage()
window.setWindowTitle('gambar')
window.show()
app.exec_()

this the ui window

【问题讨论】:

  • 到处都是错别字:将Flname更改为flnameserPixmap更改为setPixmapqtCore更改为QtCore

标签: python python-3.x pyqt5


【解决方案1】:

一切都很好,只是一些错别字。细心:)

import sys
import cv2
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore    import pyqtSlot
from PyQt5.QtGui     import QImage, QPixmap
from PyQt5.QtWidgets import QDialog, QApplication, QMainWindow
from PyQt5.uic       import loadUi

class ShowImage (QMainWindow):
    def __init__(self):
        super().__init__()

        loadUi('ganteng.ui',self)
        self.image = None
        self.loadButton.clicked.connect(self.loadClicked)

    @pyqtSlot()
    def loadClicked(self):
        self.loadImage('head.jpg', cv2.IMREAD_GRAYSCALE)

    def loadImage(self, flname, cv ):                  # Flname <-> flname;  + , cv
        self.image = cv2.imread(flname)
        self.displayImage()

    def displayImage(self):
        qformat = QImage.Format_Indexed8

        if len(self.image.shape) == 3:
            if (self.image.shape[2]) == 4:
                qformat = QImage.Format_RGBA8888
            else:
                qformat = QImage.Format_RGB888

                img = QImage(self.image,
                             self.image.shape[1],
                             self.image.shape[0],
                             self.image.strides[0],
                             qformat)
                img = img.rgbSwapped()

                self.imgLabel.setPixmap(QPixmap.fromImage(img))      # serPixmap <-> setPixmap
                self.imgLabel.setAlignment(QtCore.Qt.AlignHCenter    # qtCore    <-> QtCore
                                         | QtCore.Qt.AlignVCenter)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = ShowImage()
    window.setWindowTitle('gambar')
    window.show()
    sys.exit(app.exec_())

【讨论】:

  • 错别字不应该回答,因为它们对任何人都没有用,你有评论的特权,所以最好在评论中指出
  • 如果您真的想提供帮助,您将解释如何在 Windows 上运行 pyqt 脚本,以便正确显示 python 回溯。这样,他们可以学习如何自己调试代码,而不是在 SO 上发布离题的问题。
  • 哈哈哈感谢代码运行正常 :)
猜你喜欢
  • 2020-10-27
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 2021-12-06
相关资源
最近更新 更多