Вопрос

Я начал изучать Qtdesigner (Python) с Qt 4.8.6, и я следую в этом руководстве:

https://www.youtube.com/watch?v=glqrzliiw2e .

Но он показывает мне иногда ошибку в заголовке Иногда AttributeError: объект ui_form 'не имеет атрибута' printHam_btn '.Может кто-нибудь, пожалуйста, скажите мне, что я должен сделать или исправить свой код.

Спасибо!

Я знаю, что эта проблема уже опубликована на этом форуме, но я не могу узнать, что я должен сделать в моем случае.

<Сильный> код:

from PyQt4 import QtCore, QtGui
import sys

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setupUi(self)

    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(400, 300)
        self.verticalLayout_2 = QtGui.QVBoxLayout(Form)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.print_ham = QtGui.QPushButton(Form)
        self.print_ham.setObjectName(_fromUtf8("print_ham"))
        self.verticalLayout.addWidget(self.print_ham)
        self.verticalLayout_2.addLayout(self.verticalLayout)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Super ham", None))
        self.print_ham.setText(_translate("Form", "print ham", None))
        self.printHam_btn.clicked.connect(self.printHam)

    def printHam(self):
        print('Ham!')

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    main_window = Ui_Form()
    main_window.show()
    sys.exit(app.exec_())
.

Это было полезно?

Решение

Выпуск здесь:

self.printHam_btn.clicked.connect(self.printHam)
.

Вы называете свой экземпляр QPushButton по-другому, поэтому вам нужно будет изменить эту строку:

self.print_ham.clicked.connect(self.printHam)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top