Problem using Qpixmap.Scaled

Asked

Viewed 62 times

1

Recently I’m learning how to use the PyQt4, but a doubt arose in the use of the line of code to modify the scale of an image:

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(743, 510)
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(20, 430, 85, 27))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.foto = QtGui.QLineEdit(Form)
        self.foto.setGeometry(QtCore.QRect(20, 390, 700, 27))
        self.foto.setObjectName(_fromUtf8("Diretorio"))
        self.label = QtGui.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(30, 26, 671, 341))
        self.label.setText(_fromUtf8(""))
        self.label.setObjectName(_fromUtf8("label"))
        self.horizontalSlider = QtGui.QSlider(Form)
        self.horizontalSlider.setGeometry(QtCore.QRect(120, 430, 601, 18))
        self.horizontalSlider.setMaximum(255)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName(_fromUtf8("horizontalSlider"))
        self.label_2 = QtGui.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(380, 450, 71, 17))
        self.label_2.setObjectName(_fromUtf8("label_2"))

        self.retranslateUi(Form)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.abrirfoto)
        #self.horizontalSlider.valueChanged.connect(self.threshold)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Testando", None))
        self.pushButton.setText(_translate("Form", "Abrir", None))
        self.label_2.setText(_translate("Form", "Threshold", None))

    def abrirfoto(self):

        img = self.foto.text()
        self.label.setPixmap(QtGui.QPixmap(img))
        QtGui.QPixmap.scaled(671,341,0,0)

And returns the error:

Typeerror: Arguments Did not match any overloaded call: QPixmap.scaled(int, int, Qt.AspectRatioMode aspectRatioMode=Qt.IgnoreAspectRatio, Qt.TransformationMode transformMode=Qt.FastTransformation): first argument of unbound method must have type 'QPixmap' QPixmap.scaled(QSize, Qt.AspectRatioMode aspectRatioMode=Qt.IgnoreAspectRatio, Qt.TransformationMode transformMode=Qt.FastTransformation): first argument of unbound method must have type 'QPixmap'

  • You can’t make Scaled "loose" in the code. You have to call Scaled on an existing pixmap. You tried QtGui.QPixmap(img).scaled(671,341,0,0)? (I don’t know if you can chain like this in Pyqt. if you can’t, assign it to a variable, apply Scaled and then put it on the label)

  • I created another variable and applied Scaled, it worked here. thanks for the help =)

  • Post below as answer to your solution, explain what has changed and mark as accepted, so legal closes the question and can help other people.

1 answer

1

I added a variable in the function abrirfoto, that was associated with the function .scaled, staying that way:

def abrirfoto(self): 
    img = self.foto.text()
    imagem = QtGui.QPixmap(img) 
    imagem1 = imagem.scaled(671,341,QtCore.Qt.IgnoreAspectRatio,QtCore.Qt.FastTransformation) 
    self.label.setPixmap(QtGui.QPixmap(imagem1))

Browser other questions tagged

You are not signed in. Login or sign up in order to post.