Ich habe versucht, diesen Code dies ist der Fehler Datei "C:/hari/Lehre/Python/py Programme/gui qt4/Buch/calculator.py" zu laufen, Zeile 27, in updateUI text = Unicode (self.lineedit.text() 'UTF-8') Nameerror: name 'Unicode' ist nicht definiertName Unicode nicht python3 definiert
der Code:
from __future__ import division
from math import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Form(QDialog):
def __init__(self,parent =None):
super(Form,self).__init__(parent)
self.browser =QTextBrowser()
self.lineedit =QLineEdit("type an exp")
self.lineedit.selectAll()
layout=QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
self.connect(self.lineedit, SIGNAL("returnPressed()"), self.updateUi)
self.setWindowTitle("Calculate")
def updateUi(self):
try:
text = unicode(self.lineedit.text())
print(type(text))
self.browser.append(text+" = <b>"+eval(text)+"</b>")
except:
self.browser.append("<font color=red>"+ text + " is invalid</font>")
app=QApplication(sys.argv)
f=Form()
f.show()
app.exec_()
Übrigens: 1) ** nothing ** benutze ein blankes 'except:'. Geben Sie immer an, welche Exception Sie abfangen möchten, andernfalls wird es sogar "KeyboardInterrupt" erfassen und Bugs können leicht ausgeblendet werden. 2) ** Niemals ** rufe 'eval' auf vom Benutzer eingegebenen Text auf. Wenn Sie den Text in eine Zahl umwandeln möchten, verwenden Sie 'int (Text)' oder 'float (Text)'. Wenn Sie jede Art von * literal * erlauben wollen, benutzen Sie 'literal_eval' aus dem' ast'-Paket. – Bakuriu