qtreewiget不会出现在我的QMainWind中

2024-10-01 17:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的QTreeWidget有问题。他没有出现在我的qmain窗口上,但是窗口显示成功。你知道吗

这是我的密码:

 datas = {
    'd1' : {'a': '1', 'b': '2'},
    'd2' : {'a': '2', 'b': 'b'},
    'd1' : {'a': '2', 'b': '2'},
    'd3' : {'a': '3', 'b': '1'},
}

class Main(QMainWindow):
    """ Main App """

    def InitUI(self):

        # Layout
        layout = QVBoxLayout()
        self.setLayout(layout)

        # TreeWidget
        treeView = QTreeView()
        treeView.setModel(QStandardItemModel())
        treeView.setHeaderHidden(False)
        treeView.model().setHorizontalHeaderLabels(['mois', 'support', 'marque'])
        # TreeWidget Items
        for data in datas:
            if not datas[data]:
                continue
            parent = QStandardItem(data)
            parent.setFlags(Qt.NoItemFlags)
            for d in datas[data]:
                value = datas[data][d]
                child0 = QStandardItem(d)
                child0.setFlags(Qt.NoItemFlags | Qt.ItemIsEnabled)
                child1 = QStandardItem(str(value))
                child1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable | ~ Qt.ItemIsSelectable)
                parent.appendRow([child0, child1])
            treeView.model().appendRow(parent)

        treeView.expandAll()
        layout.addWidget(treeView)    

希望你能帮我解决:)

每提前一次谢谢


Tags: selfdatamodelmainqtparentd1layout
1条回答
网友
1楼 · 发布于 2024-10-01 17:24:25

试试看:

import sys
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore    import *


datas = {
    'd1' : {'a': '1', 'b': '2'},
    'd2' : {'a': '2', 'b': 'b'},
    'd1' : {'a': '2', 'b': '2'},
    'd3' : {'a': '3', 'b': '1'},
}

class Main(QMainWindow):
    """ Main App """
    def __init__(self, parent=None):                 # +++
        super().__init__()                           # +++

        self.InitUI()                                # +++

    def InitUI(self):


        # TreeWidget
        treeView = QTreeView()
        treeView.setModel(QStandardItemModel())
        treeView.setHeaderHidden(False)
        treeView.model().setHorizontalHeaderLabels(['mois', 'support', 'marque'])
        # TreeWidget Items
        for data in datas:
            if not datas[data]:
                continue
            parent = QStandardItem(data)
            parent.setFlags(Qt.NoItemFlags)
            for d in datas[data]:
                value = datas[data][d]
                child0 = QStandardItem(d)
                child0.setFlags(Qt.NoItemFlags | Qt.ItemIsEnabled)
                child1 = QStandardItem(str(value))
                child1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable | ~ Qt.ItemIsSelectable)
                parent.appendRow([child0, child1])
            treeView.model().appendRow(parent)

        treeView.expandAll()

        centralWidget = QWidget()                    # +++
        self.setCentralWidget(centralWidget)         # +++

        # Layout
        layout = QVBoxLayout(centralWidget)          # + centralWidget
#        self.setLayout(layout)                      #  - 

        layout.addWidget(treeView) 


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())

enter image description here

相关问题 更多 >

    热门问题