Я новичок в программировании GUI под Python и только что получил книгу «Rapid GUI Programming with Python and QT» от Summerfield. Самый первый простой пример («всплывающее предупреждение в 25 строках») на стр. 112 работает, но моя попытка точно воспроизвести второй пример («оценщик выражений в 30 строках») на стр. 116 дает только пустое окно с нет видимых полей для ввода или вывода и даже названия окна. Это под Mac OS X 10.8.5 с использованием новейшей 64-разрядной установки Python Enthought Canopy (1.2.0.1610)Простая демонстрация PyQt из книги не работает
полного содержания PyQtdemo.pyw является
from __future__ import division
import sys
from math import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def _init__(self, parent=None):
super(Form,self).__init__(parent)
self.browser = QTextBrowser()
self.lineedit = QLineEdit("Type an expression and press Enter")
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())
self.browser.append("%s = <b>%s</b>" % (text, eval(text)))
except:
self.browser.append("<font color=red>%s is invalid!</font>" % text)
app = QApplication(sys.argv)
print dir(app)
form = Form()
form.show()
app.exec_()
Мне кажется, есть только следующие возможности:
- В моем коде есть опечатка, которую я забыл;
- что-то не так с тем, как я вызываю скрипт (например, «python PyQtdemo.pyw»);
- что-то не так с моей установкой PyQt 4.10.3-1;
- В книге есть ошибка.
Я подозреваю возможность # 1, так как 'updateUi()' должен быть методом класса 'Form' и должен быть соответствующим образом отступом. – Johnsyweb
Вы правы, что этот метод должен был быть отступом (теперь исправлен), но, похоже, он не изменил результат. –