我一直在玩PyQt5,结果被困在这里了。在某个菜单中,对于每个按钮的单击(以及给定的numpy图像数组),我尝试打开一个新的图像窗口(同时将numpy数组转换为图像)。在
因此,首先,我对一个图像进行了处理(使用this answer将numpy图像数组转换为QPixmap):
NewNumpyImageWindow.py课程:import cv2
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPixmap, QImage
class NewImage(QWidget):
def __init__(self, npImage):
super().__init__()
label = QLabel(self)
pixmap = self.ConvertNumpyToQPixmap(npImage)
label.setPixmap(pixmap)
self.resize(pixmap.width(), pixmap.height())
self.show()
@staticmethod
def ConvertNumpyToQPixmap(np_img):
height, width, channel = np_img.shape
bytesPerLine = 3 * width
return QPixmap(QImage(np_img.data, width, height, bytesPerLine, QImage.Format_RGB888).rgbSwapped())
if __name__ == '__main__':
app = QApplication(sys.argv)
currentNumpyImage = cv2.imread("capture.png")
window = NewImage(currentNumpyImage)
sys.exit(app.exec_())
而且效果很好。图像显示为一个新窗口。
现在,我希望图像显示为一个新窗口,每次我按下我的主菜单按钮。在
所以我试着为每次按下(在按钮'New'上)创建上面类的一个实例,但是它不起作用。这个窗口看起来像是一个新窗口,在代码完成后立即关闭。在
新的NumpyImageWindowMenu.py课程:
^{pr2}$
任何帮助都将不胜感激。谢谢。在