Ham*_*adi 0 python pyqt python-2.7
我在 windows 7 64 位机器上使用这个 python 代码,它只是显示随机生成的黑白图像。如果我使图像大于 511x511 像素,我的 python 2.7 控制台就会崩溃。不过它在我的 Mac 上运行良好。有任何想法吗?
import sys
from PyQt4 import QtGui, QtCore
import numpy as np
class PixmapTest(QtGui.QWidget):
def __init__(self):
super(PixmapTest, self).__init__()
imglayout = QtGui.QHBoxLayout(self)
size = 512
img_8bit = (256*np.random.random((size,size))).astype(np.uint8)
img = QtGui.QImage(img_8bit.repeat(4), size, size, QtGui.QImage.Format_RGB32)
pixmap = QtGui.QPixmap(img)
imglabel = QtGui.QLabel(self)
imglabel.setPixmap(pixmap)
imglayout.addWidget(imglabel)
self.setLayout(imglayout)
self.show()
def main():
app = QtGui.QApplication(sys.argv)
form = PixmapTest()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
奇怪的是,对我(Win7,64 位)来说,截止大小接近 300。我不知道为什么它会这样,但在我的情况下,我可以通过调用processEvents
应用程序来修复它,如下所示:
class PixmapTest(QtGui.QWidget):
def __init__(self, app):
super(PixmapTest, self).__init__()
self.app = app
imglayout = QtGui.QHBoxLayout(self)
size = 333
img_8bit = (256*np.random.random((size,size))).astype(np.uint8)
img = QtGui.QImage(img_8bit.repeat(4), size, size, QtGui.QImage.Format_RGB32)
pixmap = QtGui.QPixmap(img)
imglabel = QtGui.QLabel(self)
imglabel.setPixmap(pixmap)
imglayout.addWidget(imglabel)
self.setLayout(imglayout)
self.show()
self.app.processEvents()
def main():
app = QtGui.QApplication(sys.argv)
form = PixmapTest(app)
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)