在pyside ui的分离器现在可见

时间:2015-10-28 18:17:09

标签: python pyside

为什么拆分器没有显示在选项卡中?

我不完全确定出了什么问题。我猜测布局框没有调整大小以匹配选项卡的大小,作为回报,在选项卡中产生这样一个小窗口,它不足以显示它的内容。欢迎任何代码建议。

import sys
from PySide import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):      

        # controls - main
        # ----------------------------------------------------------------------
        main_tabWidget = QtGui.QTabWidget()

        # controls - factions tab
        # ----------------------------------------------------------------------
        factions_tab = QtGui.QWidget()
        factions_tab_layout = QtGui.QHBoxLayout()

        topleft = QtGui.QFrame(factions_tab)
        topleft.setFrameShape(QtGui.QFrame.StyledPanel)

        topright = QtGui.QFrame(factions_tab)
        topright.setFrameShape(QtGui.QFrame.StyledPanel)

        splitter1 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter1.addWidget(topleft)
        splitter1.addWidget(topright)

        factions_tab_layout.addWidget(splitter1)
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))

        main_tabWidget.addTab(factions_tab, "Factions")

        # main layout
        # ----------------------------------------------------------------------
        main_layout = QtGui.QVBoxLayout()
        main_layout.addWidget(main_tabWidget)

        self.setLayout(main_layout)
        self.setGeometry(300, 300, 400, 300)
        self.setWindowTitle('Example')
        self.center()
        self.show()

    def center(self):
        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def onChanged(self, text): 
        self.lbl.setText(text)
        self.lbl.adjustSize()        


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

factions_tab_layout永远不会被赋予父级,并且不会在任何小部件上设置为布局。这意味着当initUI返回时,它的子窗口小部件将被垃圾收集,因为您也不会给它们任何父窗口。

最小修复:

    factions_tab_layout = QtGui.QHBoxLayout(factions_tab)
相关问题