我目前使用PyQt4和qrcode4.0.4。在Python中創建QR碼(PyQt)
from PyQt4 import QtGui, QtCore
from PIL.ImageQt import ImageQt
import qrcode
class QRLabel(QtGui.QLabel):
def __init__(self, text=""):
super(QRLabel, self).__init__()
self.setCode(text)
def setCode(self, text=""):
self.text = text
qrImg = qrcode.make(text)
imgQt = ImageQt(qrImg.convert("RGB")) # keep a reference!
pixm = QtGui.QPixmap.fromImage(imgQt)
self.setPixmap(pixm.scaled(self.size(),QtCore.Qt.KeepAspectRatio))
正如您所看到的,在屏幕上顯示圖像之前需要傳遞幾個障礙。 QR碼從RGBA PIL圖像開始,轉換爲RGB,然後轉換爲PIL ImageQt對象,然後轉換爲QPixmap,然後將其放在具有縮放修正的QLabel上。
如果您沒有明確存儲imgQt引用,那麼當您加載小部件時,您會收到垃圾信息。
我的問題:有什麼我可以做,以改善這一點,因爲它似乎有這麼多的轉換涉及。