11

だから私はPythonとPyQt4で簡単なWindowsアプリケーションを作成しています. QtCreator で必要な方法で UI を設計し、.ui ファイルから必要な .py ファイルを作成しました。ウィンドウのインスタンスを実際に開こうとすると、次のエラーが表示されます。

AttributeError: 'Window' object has no attribute 'setCentralWidget'

そこで、ui_mainwindow.py ファイルに戻り、次の行をコメントアウトします。

MainWindow.setCentralWidget(self.centralWidget)

main.py を実行すると、ウィンドウのインスタンスが生成されますが、グリッド レイアウトが失われ、UI 要素がそこに浮かんでいるだけです。私が間違っていることは何か分かりますか?

私の main.py ファイル:

import sys
from PyQt4.QtGui import QApplication
from window import Window

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

そして私のwindow.pyファイル:

from PyQt4.QtCore import Qt, SIGNAL
from PyQt4.QtGui import *

from ui_mainwindow import Ui_MainWindow

class Window(QWidget, Ui_MainWindow):

    def __init__(self, parent = None):

        QWidget.__init__(self, parent)
        self.setupUi(self)
4

1 に答える 1

20

QMainWindowではなく、から継承する必要がありQWidgetます。setCentralWidgetの方法ですQMainWindow

from PyQt4.QtCore import Qt, SIGNAL
from PyQt4.QtGui import *

from ui_mainwindow import Ui_MainWindow

class Window(QMainWindow, Ui_MainWindow):
    def __init__(self, parent = None):

        QMainWindow.__init__(self, parent)
        # or better
        # super(Window, self).__init__(parent)

        self.setupUi(self)
于 2012-04-18T23:16:56.563 に答える