Python 2.7 PyQt4添加主窗口文件到另一个主窗口的选项卡



我正在用Python 2.7创建一个程序,并且遇到了一个问题,搜索了几个小时的谷歌和论坛都没有回答。

我的程序由一个名为sessions_window.py的Main_Window组成,它包含一个Tab Widget。在每个选项卡中,应该包含一个单独的主窗口文件。例如,sessions_window.py的一个选项卡是帐户选项卡,我有另一个包含帐户信息的account1 .py文件,我想将其嵌入到帐户选项卡中(是的,我知道我拼写了帐户"帐户",稍后我会修复)。另一个选项卡将被称为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_())

我已经导入了文件,为选项卡创建了网格,并尝试将widget添加到网格中。但是我得到下面的错误。

C:Python27python.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).

同样的错误。

account1 .py包含一个类,其中包含一堆函数。不认为需要包括它在这里,但如果它是需要让我知道。任何帮助都将非常感激。

您需要首先实例化类(从类创建对象/实例)

self.accountTabImport = acount1.Ui_MainWindow()

(注意末尾的括号)

请注意,您可能还需要为上述调用提供参数,这取决于Ui_MainWindow.__init__
的方法签名中的内容。

相关内容

  • 没有找到相关文章

最新更新