我是Python下的GUI编程的新手,只是得到了Summerfield的“使用Python和QT进行快速GUI编程”一书。第112页上的第一个简单示例(“25行中的弹出警报”)有效,但我尝试完全复制第116页上的第二个示例(“30行中的表达式求值程序”)只生成一个空白窗口,输入或输出都没有可见字段,甚至没有窗口标题。这是在Mac OS X 10.8.5下使用最新的Enthought Canopy 64位Python安装(1.2.0.1610)
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_()
在我看来,只有以下几种可能性:
答案 0 :(得分:0)
这是代码中的拼写错误。
Form.__init__
方法缺少初始下划线,因此永远不会被调用。
(PS:这也解释了为什么updateUi
方法的错误缩进在AttributeError
中引用时不会引发self.connect
。