я пытался запустить этот код, это файл ошибки "C:/hari/Academics/python/pyprograms/gui qt4/book/calculator.py", строка 27, в updateUi text = unicode(self.lineedit.text (), 'utf-8') NameError: имя 'unicode' не определено
код :
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_()
except:
. Всегда указывайте, какое исключение вы хотите перехватить, иначе оно перехватит дажеKeyboardInterrupt
, а также может легко скрыть ошибки. 2) никогда не вызыватьeval
для текста, вставленного пользователем. Если вы хотите преобразовать текст в число, используйтеint(text)
илиfloat(text)
. Если вы хотите разрешить любой вид литералов, используйтеliteral_eval
из пакетаast
. - person Bakuriu   schedule 27.07.2016