2016-04-28 25 views
0

我在PyQt4中製作了多頁測驗應用程序,我試圖在最後添加得分總結,因此它會計算出有多少正確和不正確的答案。在PyQt4中將列表長度放到QLabel中

對於我做了名單,這是我做的:

def scorecheck(self, sendercheck): # sendercheck object gets from which widget was signal sent. 
    wronganswers = [] 
    correctanswers = [] 
    if sendercheck == (self.answ or self.answ1): 
     wronganswers.append(1) 


    if sendercheck == (self.answ2): 
     correctanswers.append(1) 

我怎樣才能把wronganswers長度QLabel?

我嘗試了這些:

self.wronganswerlabel = QtGui.QLabel(self) 
self.wronganswerlabel.setText(len(wronganswers)) 
self.wronganswerlabel.setGeometry(200, 200, 200, 200) 
self.wronganswerlabel.show() 

給了我這個錯誤:

self.wronganswer.setText(len(wronganswers))
TypeError: QLabel.setText(QString): argument 1 has unexpected type 'int'

這:

self.wronganswerlabel = QtGui.QLabel(self, "Score:".len(wronganswers)) 
self.wronganswerlabel.setGeometry(200, 200, 200, 200) 
self.wronganswerlabel.show() 

給我的錯誤:

self.wronganswer = QtGui.QLabel(self, "Score:".len(wronganswers))
AttributeError: 'str' object has no attribute 'len'

回答

1

這只是一個鑄造的東西; QtGui.QLabel()QtGui.QLabel.setText()預計QtCore.QString或只是一個unicodestring對象,但您正在嘗試傳遞一個int。您需要告訴python如何將整數轉換爲字符串。通常的方法是str(myint)

此外,您需要使用+運算符來組合兩個字符串 - 現在您的語法的方式,您要求字符串"Score:"它的長度方法,這可能不是你的意思。

下應該按預期工作

self.wronganswerlabel.setText(str(len(wronganswers))) 

OR

self.wronganswerlabel = QtGui.QLabel("Score:" + str(len(wronganswers)), self) 
+0

給了我這個錯誤@lemonhead'文件 「quiz.py」,線路352,在scorecheck self.wronganswerlabel = QtGui。 QLabel(QWidget parent = None,Qt.WindowFlags flags = 0):參數2有意外的類型'QLabel(self,「Score:」+ str(len(wronganswers))) TypeError:參數與任何重載調用不匹配: QLabel str' QLabe l(QString,QWidget parent = None,Qt.WindowFlags flags = 0):參數1有意想不到的類型'Window' – ShellRox

+0

感謝您對解釋的有用答案!我解決了把自己放在最後的問題:'self.wronganswerlabel = QtGui.QLabel(「Score:」+ str(len(wronganswers)),self) self.wronganswerlabel.setGeometry(200,200,200,200) self.wronganswerlabel.show()' – ShellRox