1

本「Rapid GUI Programming with Python and QT」の例を実行しようとしていますが、エラー メッセージが表示されます。

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 から継承しようとしているだけなので、Form オブジェクトを作成するために引数が必要な理由について混乱しています...構文に微妙な点がありませんか?

4

2 に答える 2

3

私が持っているバージョンでは代わりに QVBoxLayout を使用しています:

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

私の理解では、ウィジェットを垂直に並べるので、.LeftToRight と親は厳密には必要ありません。

本のウェブサイトから python 2.6 の最新のコード アーカイブを使用しています。

于 2012-11-28T04:48:42.670 に答える
0

を作成するときはQBoxLayout、方向 (例: QBoxLayout.LeftToRight) とオプションで親 (この場合はselfが親として機能する必要があります) を指定する必要があります。これらは、layout = QBoxLayout()回線に追加する必要があります。

于 2012-11-28T04:46:36.480 に答える