【发布时间】:2014-02-09 06:09:56
【问题描述】:
我是 Python 下的 GUI 编程的新手,刚刚获得 Summerfield 的“Rapid GUI Programming with Python and QT”一书。第 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_()
在我看来只有以下几种可能:
- 我忽略了我的代码中有一个错字;
- 我调用脚本的方式有问题(例如,“python PyQtdemo.pyw”);
- 我的 PyQt 4.10.3-1 安装有问题;
- 书中有错误。
【问题讨论】:
-
我怀疑可能性#1,因为
updateUi()应该是Form类的方法,需要相应地缩进。 -
你说得对,该方法应该缩进(现在已修复),但似乎没有改变结果。