0

私は Python 2.7 でプログラムを作成していますが、Google やフォーラムで何時間も検索しても回答がないという問題に遭遇しました。

私のプログラムは、タブ ウィジェットを保持する sessions_window.py という名前の Main_Window で構成されています。各タブ内には、個別のメイン ウィンドウ ファイルが含まれている必要があります。たとえば、sessions_window.py の 1 つのタブがアカウント タブで、アカウント情報を含む別の acount1.py ファイルがあり、それをアカウント タブに埋め込みたいとします (はい、アカウントのスペルが「acount」であることはわかっています。後で修正します)。別のタブには Graph という名前が付けられ、別の Graph.py ファイルが含まれている必要があります (ただし、この時点にはまだ到達していません)。

*メモとして、インデックス/説明システムに従って要素に名前を付けているため、少し長くてファンキーですが、役に立ちます.

ファイルを正常に作成しましたが、それらを session_window.py タブに埋め込むことに固執しています。

from PyQt4.QtCore import *
from PyQt4.QtGui import *

import acount1

class Ui_BxSession(object):

  def configurePageB(self, BxSession):

        self.accountTabImport = acount1.Ui_MainWindow

# B : Session Page
        BxSession.setObjectName("BxSession")
        BxSession.resize(800, 600)

# B_cn1 : Main Space Container

        self.B_cn1xMainSpace = QWidget(BxSession)
        self.B_cn1xMainSpace.setObjectName("B_cn1xMainSpace")

        self.gridLayout_MainB = QGridLayout(self.B_cn1xMainSpace)
        self.gridLayout_MainB.setObjectName("gridLayout_MainB")

        BxSession.setCentralWidget(self.B_cn1xMainSpace)

# B_cn1_cn1 : Tab Window Space Container

        self.B_cn1_cn1xTabWindowSpace = QTabWidget(self.B_cn1xMainSpace)
        self.B_cn1_cn1xTabWindowSpace.setObjectName("B_cn1_cn1xTabWindowSpace")

        self.gridLayout_MainB.addWidget(self.B_cn1_cn1xTabWindowSpace)

# B_cn1_cn1_tb1 : Account Tab

        self.B_cn1_cn1_tb1xAccount = QWidget(self.B_cn1_cn1xTabWindowSpace)
        self.B_cn1_cn1_tb1xAccount.setObjectName("B_cn1_cn1_tb1xAccount")

        self.B_cn1_cn1xTabWindowSpace.addTab(self.B_cn1_cn1_tb1xAccount, "Account")

        self.gridLayout_AccountTab = QGridLayout(self.B_cn1_cn1_tb1xAccount)
        self.gridLayout_AccountTab.setObjectName("gridLayout_AccountTab")



        self.gridLayout_AccountTab.addWidget(self.accountTabImport)



# B_cn1_cn1_tb2 : Session Tab

        self.B_cn1_cn1_tb2xSession1 = QWidget(self.B_cn1_cn1xTabWindowSpace)
        self.B_cn1_cn1_tb2xSession1.setObjectName("B_cn1_cn1_tb2xSession1")

        self.B_cn1_cn1xTabWindowSpace.addTab(self.B_cn1_cn1_tb2xSession1, "Session")

### rest of code left out

if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
BxSession = QMainWindow()
ui = Ui_BxSession()
ui.configurePageB(BxSession)
BxSession.show()
sys.exit(app.exec_())

ファイルをインポートし、タブのグリッドを作成し、addWidget をグリッドにしようとしました。しかし、私は以下のエラーが発生します。

C:\Python27\python.exe "C:/Users/smiths/Desktop/App      Project/AppDev_2/rewritecode/program/session_window.py"
Traceback (most recent call last):
File "C:/Users/smiths/Desktop/App  Project/AppDev_2/rewritecode/program/session_window.py", line 139, in <module>
ui.configurePageB(BxSession)
File "C:/Users/smiths/Desktop/App  Project/AppDev_2/rewritecode/program/session_window.py", line 50, in configurePageB
self.gridLayout_AccountTab.addWidget(self.accountTabImport)
TypeError: arguments did not match any overloaded call:
QGridLayout.addWidget(QWidget): argument 1 has unexpected type 'type'
QGridLayout.addWidget(QWidget, int, int, Qt.Alignment alignment=0): argument  1 has unexpected type 'type'
QGridLayout.addWidget(QWidget, int, int, int, int, Qt.Alignment alignment=0): argument 1 has unexpected type 'type'

Process finished with exit code 1

私も試しました

self.accountTabImport = acount1.Ui_MainWindow()

同じエラーメッセージが表示されます。

また、上記の定義をスキップして、単に含めるようにしました

self.gridLayout_AccountTab.addWidget(acount1.Ui_MainWindow).

同じエラー。

acount1.py には、一連の関数を保持するクラスが含まれています。ここに含める必要はありませんが、必要な場合はお知らせください。どんな助けでも大歓迎です。

4

1 に答える 1

0

最初にクラスをインスタンス化する必要があります (クラスからオブジェクト/インスタンスを作成します)

self.accountTabImport = acount1.Ui_MainWindow()

(最後の括弧に注意してください)

のメソッド シグネチャの内容によっては、上記の呼び出しに引数を提供する必要がある場合があることに注意してください。Ui_MainWindow.__init__

于 2016-11-12T06:01:03.940 に答える