[英]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.