Как мне получить что-то из моего списка для отображения в графическом интерфейсе? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть список:

def submit(self):
    self.l = []

Мне нужно, чтобы все, что есть в списке, отображалось в моем графическом интерфейсе

    def retranslateUi(self, Form):
    Form.setWindowTitle(_translate("Form", "Math Game", None))
    self.lineEdit.setStatusTip(_translate("Form", "Enter answer here", None))
    self.pushButton.setText(_translate("Form", "SUBMIT", None))
    self.label.setText(_translate("Form", self.l, None))

Я получаю сообщение об ошибке:

        self.label.setText(_translate("Form", self.l, None))
AttributeError: 'Ui_Form' object has no attribute 'l'

Я пытаюсь создать детскую математическую игру (задание для колледжа), и все, что есть в списке, должно отображаться в графическом интерфейсе, что я делаю не так?Я считаю, что это может быть связано с скобками в ("Form, self.l, None"), но я не слишком уверен.

Это весь код:

    from PyQt4 import QtCore, QtGui
import random

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(object):
    #this is backend code
    def submit(self):
        self.l = []
        if self.lineEdit.text == self.l():
            print("Correct!")
        else:
            print("Incorrect!")
        #this is GUI code
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.setEnabled(True)
        Form.resize(311, 192)
        Form.setLayoutDirection(QtCore.Qt.LeftToRight)
        Form.setAutoFillBackground(True)
        self.lineEdit = QtGui.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(10, 140, 191, 41))
        self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("Calibri"))
        font.setPointSize(20)
        font.setFamily(_fromUtf8("Calibri"))
        self.lineEdit.setFont(font)
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(210, 140, 91, 41))
        self.pushButton.clicked.connect(self.submit)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("Calibri"))
        font.setPointSize(12)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.widget = QtGui.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(10, 10, 291, 121))
        self.widget.setAutoFillBackground(True)
        p = self.widget.palette()
        p.setColor(self.widget.backgroundRole(), QtCore.Qt.white)
        self.widget.setPalette(p)
        self.widget.setObjectName(_fromUtf8("widget"))
        self.label = QtGui.QLabel(self.widget)
        self.label.setGeometry(QtCore.QRect(60, 40, 341, 41))
        font = QtGui.QFont()
        font.setPointSize(24)
        self.label.setFont(font)
        self.label.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.label.setObjectName(_fromUtf8("label"))
        self.widget.raise_()
        self.lineEdit.raise_()
        self.pushButton.raise_()
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

        #translation of names from output name to edited name
    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Math Game", None))
        self.lineEdit.setStatusTip(_translate("Form", "Enter answer here", None))
        self.pushButton.setText(_translate("Form", "SUBMIT", None))
        self.label.setText(_translate("Form", self.l, None))

1 Ответ

0 голосов
/ 01 июня 2018

self.l создается только при вызове self.submit (который сам вызывается только с помощью обратного вызова вашей кнопки), поэтому, если retranslateUi вызывается раньше, чем submit, self.l еще не будет,Вы должны включить все, что ожидается от создания объекта, в его метод __init__, даже если значение является просто заполнителем, таким как [].

...