2016-06-24 123 views
0

我剛剛開始學習PyQt和GUI編程,並且我從012頁的「用Python和Qt進行快速GUI編程:PyQt編程權威指南」應該顯示一個計算器來計算表達式。 當我運行應用程序主窗口出現,但沒有做任何事情,因爲我複製代碼形式一個衆所周知的pyqt書,這是非常奇怪的。 我使用python的3.4.4和PyQt4的。這是我從書抄代碼:PyQt4 QTextBrowser.append Does not not any output

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("retrunPressed()"), 
        self.updateUi) 
     self.setWindowTitle("Calculate") 

    def updateUi(self): 
     try: 
      text= unicode(self.lineedit.text()) 
      self.browser.append("{0} = <b>{1}</b>".format(text,eval(text))) 
     except: 
      self.browser.append(
       "<font color=red>%s is invalid!</font>" % text) 

app = QApplication(sys.argv) 
form = Form() 
form.show() 
app.exec_() 

這些都是錯誤的,我得到:

Traceback (most recent call last): 

文件 「calculator.pyw」,第25行在updateUi 文本= unicode的(self.lineedit.text()) NameError:名稱 '的unicode' 沒有定義

在處理上述例外的,另一個異常:

回溯(最近呼叫最後): 文件「calculator.pyw」,第29行,更新UI 「%s無效!」 %text) UnboundLocalError:分配之前引用的局部變量「文本」

我知道不要求其他人調試我的代碼,但我盡我所能,並且沒有出現。 感謝

回答

0

您的信號名稱的錯字,應該

self.connect(self.lineedit, SIGNAL("returnPressed()"), 

self.connect(self.lineedit,SIGNAL( 「RET nPressed()」),

所以顯然你沒有複製它,也似乎書是用python2編寫的,所以你不需要python3中的unicode函數字符串默認情況下是unicode

+0

謝謝你。我的問題解決了unicode和信號change.can你推薦我一本更新的書,涵蓋pyqt5和python3? –

+0

不幸的是,我不知道有任何完整的pyqt5電子書,但有很多教程和'Qt4'的概念仍然存在,但看看這個鏈接http://stackoverflow.com/questions/20996193/is-there-a-tutorial-specific-for-pyqt5 – danidee

+0

也不會忘記接受我的答案,如果它爲你工作:) – danidee