PyQ中的继承困难

2024-09-24 10:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着运行一本书《用Python和QT快速GUI编程》中的一个例子,得到了一条错误消息。在

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 = QBoxLayout()
        layout.addWidget(self.browser)
        layout.addWidget(self.lineedit)
        self.setLayout(layout)
        self.lineedit.setFocus()

        self.connect(self.lineedit, SIGNAL("returnPressed()"),self.UpdateGUI)
        self.setWindowTitle("Ryans App")

def UpdateGUI(self):
    try 
        text = 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)
form = Form()
form.show()
app.exec_()    

我得到的线索是:

^{pr2}$

我不明白为什么创建Form对象需要一个参数,因为我正试图从QDialog继承。。。我是不是在语法上遗漏了一点微妙之处?在


Tags: textfromimportselfbrowserforminitdef
2条回答

创建QBoxLayout时,需要指定方向(例如QBoxLayout.LeftToRight)和可选的父对象(在本例中,self应该作为父对象工作)。 这些应该添加到您的layout = QBoxLayout()行。在

我的版本改用QVBoxLayout:

...
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
...

我的理解是,由于它垂直排列小部件,.LeftToRight和parent不是严格必需的。在

我使用的是图书网站上最新的Python2.6代码归档。在

相关问题 更多 >