我正在尝试运行“使用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_()
我得到的轨迹是:
Traceback (most recent call last):
File "C:\Users\MyName\workspaces\LearningProject\src\LearningModule.py", line 33, in <module>
form = Form()
File "C:\Users\MyName\workspaces\LearningProject\src\LearningModule.py", line 16, in __init__
layout = QBoxLayout()
TypeError: QBoxLayout(QBoxLayout.Direction, QWidget parent=None): not enough arguments
我搞不懂为什么它需要一个参数来创建表单对象,因为我只是试图从QDialog继承……我是否遗漏了语法中的微妙之处?
发布于 2012-11-28 04:46:36
创建QBoxLayout
时,您需要指定方向(例如QBoxLayout.LeftToRight
)和可选的父项(在这种情况下,self
应作为父项工作)。这些应该添加到您的layout = QBoxLayout()
行中。
发布于 2012-11-28 04:48:43
我的版本使用的是QVBoxLayout:
...
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
...
我的理解是,由于它将小部件垂直排列在一起,因此.LeftToRight和父级并不是绝对必要的。
我使用的是图书网站上的python 2.6的最新代码归档。
https://stackoverflow.com/questions/13597737
复制相似问题