如何在PySide中添加选项卡

时间:2014-07-25 22:26:43

标签: python user-interface pyside

我正在尝试为2个网格布局添加标签,但是当我运行代码时,似乎没有标签。

我认为

wid_inner.tab = QtGui.QTabWidget()

未正确将标签添加到网格

import sys
from PySide import QtGui


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)

    # setting the outter widget and layout
    wid = QtGui.QWidget()
    grid = QtGui.QGridLayout()
    wid.setLayout(grid)

    # setting the inner widget and layout
    grid_inner = QtGui.QGridLayout()
    wid_inner = QtGui.QWidget()
    wid_inner.setLayout(grid_inner)

    # add the inner widget to the outer layout
    grid.addWidget(wid_inner)

    # add tab frame to widget
    wid_inner.tab = QtGui.QTabWidget()

    # create tab
    new_tab = QtGui.QWidget()
    grid_tab = QtGui.QGridLayout()
    grid_tab.setSpacing(10)
    new_tab.setLayout(grid_tab)
    new_tab.tab_name_private = "test1"
    wid_inner.tab.addTab(new_tab, "test1")

    # create tab 2
    new_tab2 = QtGui.QWidget()
    new_tab2.setLayout(grid_tab)
    wid_inner.tab.addTab(new_tab2, "test2")

    wid.show()
    sys.exit(app.exec_())

感谢任何帮助

1 个答案:

答案 0 :(得分:3)

您需要为每个内部窗口小部件提供父窗口,并且选项卡窗口小部件wid_inner.tab未添加到任何布局。建立布局似乎有点复杂......你考虑过使用QtDesigner吗?

wid = QtGui.QWidget()
grid = QtGui.QGridLayout(wid)
wid.setLayout(grid)

# setting the inner widget and layout
grid_inner = QtGui.QGridLayout(wid)
wid_inner = QtGui.QWidget(wid)
wid_inner.setLayout(grid_inner)

# add the inner widget to the outer layout
grid.addWidget(wid_inner)

# add tab frame to widget
wid_inner.tab = QtGui.QTabWidget(wid_inner)
grid_inner.addWidget(wid_inner.tab)

# create tab
new_tab = QtGui.QWidget(wid_inner.tab)
grid_tab = QtGui.QGridLayout(new_tab)
grid_tab.setSpacing(10)
new_tab.setLayout(grid_tab)
new_tab.tab_name_private = "test1"
wid_inner.tab.addTab(new_tab, "test1")

# create tab 2
new_tab2 = QtGui.QWidget(wid_inner.tab)
new_tab2.setLayout(grid_tab)
wid_inner.tab.addTab(new_tab2, "test2")

wid.show()
app.exec_()