-3
我是Python下的GUI編程的新手,剛剛拿到Summerfield編寫的「Python和QT的快速GUI編程」一書。第112頁的第一個簡單示例(第25頁中的「彈出警報」)工作正常,但我試圖完全複製第116頁的第二個示例(第30頁上的「表達式賦值器」),只生成一個空白窗口,沒有任何條目或輸出的可見字段,甚至沒有窗口標題。這是在Mac OS X 10.8.5使用最新的Enthought冠64位Python安裝(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
你說得對,該方法應該縮進(現在已修復),但似乎沒有改變結果。 –