【问题标题】:PyQt QTreeWidget not displaying contentPyQt QTreeWidget 不显示内容
【发布时间】:2014-03-13 17:28:16
【问题描述】:

我使用 Qt 设计器来设计 UI(文件:tree_view_widget_ui.py)并且我有一个类(文件:tree_view_widget.py)创建小部件并显示数据,但不显示数据。谁能告诉我我做错了什么。

tree_view_widget.py

from tree_view_widget_ui import Ui_Form

class TreeViewWidget(QWidget):
    def __init__(self, data2show):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)

        self.data2show = data2show
        self.addItems(self.ui.treeWidget.invisibleRootItem())   #not sure about this line?

    def addItems(self, parent):
        column = 0
        data_group_1 = self.addParent(parent, column, 'Group1', 'data Clients')

        for data in self.data2show:
            self.addChild(data_item, column, data.prop1, data.prop2)

    def addParent(self, parent, column, title, data):
        item = QtGui.QTreeWidgetItem(parent, [title])
        item.setData(column, QtCore.Qt.UserRole, data)
        item.setChildIndicatorPolicy(QtGui.QTreeWidgetItem.ShowIndicator)
        item.setExpanded (True)
        return item

    def addChild(self, parent, column, title, data):
        item = QtGui.QTreeWidgetItem(parent, [title])
        item.setData(column, QtCore.Qt.UserRole, data)
        return item

以及 GUI 设计文件(使用 Qt Designer 创建):

tree_view_widget_ui.py

from PyQt4 import QtCore, QtGui
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s
try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("TreeView"))
        Form.setEnabled(True)
        Form.resize(200, 400)
        Form.setFixedSize(200, 400)
        self.treeWidget = QtGui.QTreeWidget(Form)
        self.treeWidget.setEnabled(True)
        self.treeWidget.setGeometry(QtCore.QRect(0, 0, 200, 400))
        self.treeWidget.setFrameShadow(QtGui.QFrame.Sunken)
        self.treeWidget.setLineWidth(1)
        self.treeWidget.setMidLineWidth(0)
        self.treeWidget.setAutoScrollMargin(16)
        self.treeWidget.setIndentation(1)
        self.treeWidget.setRootIsDecorated(True)
        self.treeWidget.setUniformRowHeights(True)
        self.treeWidget.setAnimated(False)
        self.treeWidget.setColumnCount(0)
        self.treeWidget.setObjectName(_fromUtf8("treeWidget"))
        self.treeWidget.header().setVisible(False)
        self.treeWidget.setHeaderHidden(True)
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Tree View", "Tree View", None))
        self.treeWidget.setSortingEnabled(False)

有什么建议可以更改数据以树形显示的代码吗?

【问题讨论】:

    标签: python python-2.7 pyqt pyqt4 pyside


    【解决方案1】:

    您没有看到任何添加的项目的原因是您已将树小部件的列数设置为零(在 GUI 模块中)。

    要解决此问题,请返回 Qt 设计器,选择您的树小部件并向下滚动到属性编辑器的底部。然后选择 columnCount 的值并单击右侧的红色小箭头将其重置为默认值。

    别忘了重新生成你的 GUI 模块!

    【讨论】:

      猜你喜欢
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 2015-04-09
      • 1970-01-01
      • 2014-11-13
      • 2014-02-14
      相关资源
      最近更新 更多