簡體   English   中英

PyQt5 QTreeWidget 在布局中顯示小部件外部的額外列

[英]PyQt5 QTreeWidget in layout showing an extra column outside the widget

我正在嘗試編寫一個 PyQt5 小部件,它將成為應用程序內的基本預設管理器。 我正在嘗試使用 QTreeWidget 來顯示每種類型的結構。 我有這個奇怪的問題,我看到一個額外的 QTreeWidget,在我的 QTreeWidget 之外有一列名為“1”。 我附上了一張圖片(對不起,我無法截圖)和代碼。 我還注意到,如果我不使用類,這不會發生。

這是我顯示問題的測試代碼:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class MyTree(QtWidgets.QTreeWidget):
    def __init__(self, parent = None):
        super(self.__class__, self).__init__(parent)

        boxLayout = QtWidgets.QVBoxLayout()

        treeWidget = QtWidgets.QTreeWidget()
        treeWidget.setHeaderLabels(['Preset Name'])
        treeWidget.setColumnCount(1)
        items = []
        for i in range(10):
            items.append(QtWidgets.QTreeWidgetItem(["item {0}".format(i)]))
        treeWidget.insertTopLevelItems(0, items)

        boxLayout.addWidget(treeWidget)
        self.setLayout(boxLayout)

if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    w = MyTree()
    w.show()

    sys.exit(app.exec_())

這就是我所看到的:

我最好的猜測是導致它的布局,因為如果我像這樣創建 QTreeWidget:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

app = QtWidgets.QApplication(sys.argv)

treeWidget = QtWidgets.QTreeWidget()
treeWidget.setHeaderLabels(['Preset Name'])
treeWidget.setColumnCount(1)
items = []
for i in range(10):
    items.append(QtWidgets.QTreeWidgetItem(["item {0}".format(i)]))
treeWidget.insertTopLevelItems(0, items)
treeWidget.show()

sys.exit(app.exec_())

這就是我所看到的:

任何想法如何讓它像第二張圖片一樣顯示,來自 class?

任何幫助是極大的贊賞

錯誤很簡單:您的 window (MyTree) 是一個空的 QTreeWidget,里面有另一個 QTreeWidget,所以“1”屬於空的 QTreeWidget。

有兩種可能的解決方案:

  • 沒有用戶作為基礎 class 到 QTreeWidget

     class MyTree(QtWidgets.QWidget): def __init__(self, parent=None): super(self.__class__, self).__init__(parent) treeWidget = QtWidgets.QTreeWidget() treeWidget.setHeaderLabels(["Preset Name"]) treeWidget.setColumnCount(1) items = [] for i in range(10): items.append(QtWidgets.QTreeWidgetItem(["item {0}".format(i)])) treeWidget.insertTopLevelItems(0, items) boxLayout = QtWidgets.QVBoxLayout(self) boxLayout.addWidget(treeWidget)
  • 不要嵌套新的 QTreeWidget

     class MyTree(QtWidgets.QTreeWidget): def __init__(self, parent=None): super(self.__class__, self).__init__(parent) self.setHeaderLabels(["Preset Name"]) self.setColumnCount(1) items = [] for i in range(10): items.append(QtWidgets.QTreeWidgetItem(["item {0}".format(i)])) self.insertTopLevelItems(0, items)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM