为什么拆分器没有显示在选项卡中?
我不完全确定出了什么问题。我猜测布局框没有调整大小以匹配选项卡的大小,作为回报,在选项卡中产生这样一个小窗口,它不足以显示它的内容。欢迎任何代码建议。
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()
答案 0 :(得分:1)
factions_tab_layout
永远不会被赋予父级,并且不会在任何小部件上设置为布局。这意味着当initUI
返回时,它的子窗口小部件将被垃圾收集,因为您也不会给它们任何父窗口。
最小修复:
factions_tab_layout = QtGui.QHBoxLayout(factions_tab)