Python 在树中对项目重新排序
我希望能够对Python 在树中对项目重新排序,python,python-3.x,pyqt,pyqt5,qtreewidget,Python,Python 3.x,Pyqt,Pyqt5,Qtreewidget,我希望能够对my_tree中的项目进行重新排序,我已经实现了以下几点: my_tree.setDragEnabled(True) my_tree.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove) my_tree.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) 然而,我只想将这种行为限制在同一水平上 考虑以下玩具示例: from PyQt5 import Q
my_tree
中的项目进行重新排序,我已经实现了以下几点:
my_tree.setDragEnabled(True)
my_tree.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
my_tree.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
然而,我只想将这种行为限制在同一水平上
考虑以下玩具示例:
from PyQt5 import QtWidgets, QtGui, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
w = QtWidgets.QWidget()
layout = QtWidgets.QVBoxLayout()
w.setLayout(layout)
self.setCentralWidget(w)
my_tree = QtWidgets.QTreeWidget()
layout.addWidget(my_tree)
alpha = QtWidgets.QTreeWidgetItem(my_tree, ['Alpha'])
beta = QtWidgets.QTreeWidgetItem(my_tree, ['Beta'])
alpha.addChild(QtWidgets.QTreeWidgetItem(['one']))
alpha.addChild(QtWidgets.QTreeWidgetItem(['two']))
beta.addChild(QtWidgets.QTreeWidgetItem(['first']))
beta.addChild(QtWidgets.QTreeWidgetItem(['second']))
my_tree.setDragEnabled(True)
my_tree.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
my_tree.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
my_tree.expandAll()
alpha.child(0).setSelected(True)
self.show()
app = QtWidgets.QApplication([])
window = MainWindow()
app.exec_()
在本例中,我只想将beta
置于alpha
之上,反之亦然。我还希望每个根目录的子项具有相同的内容,但仅限于每个根目录中,例如second
上面的first
和相反的内容
不允许嵌套(例如,使two
成为one
的子级)。我也不希望能够自由地将孩子们从一个根拖到另一个根,也不希望能够将孩子们的根拖到另一个根
有人知道我该怎么做吗