私はPython 2.7でプログラムを作成していて、何時間もGoogleやフォーラムを検索しても答えられていないという問題がありました。Python 2.7 PyQt4メインウィンドウのファイルを別のメインウィンドウのタブに追加する
私のプログラムは、タブウィジェットを保持する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
Iはまた、同じエラーメッセージで
self.accountTabImport = acount1.Ui_MainWindow()
を試みました。
私はまた、上記のように、ちょうど
self.gridLayout_AccountTab.addWidget(acount1.Ui_MainWindow).
同じエラーが含まれる定義に出スキップしようとしました。
acount1.pyには、一連の機能を保持するクラスが含まれています。それをここに含める必要はありませんが、必要であれば教えてください。どんな助けでも大歓迎です。