Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在树中对项目重新排序_Python_Python 3.x_Pyqt_Pyqt5_Qtreewidget - Fatal编程技术网

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
的子级)。我也不希望能够自由地将孩子们从一个根拖到另一个根,也不希望能够将孩子们的根拖到另一个根

有人知道我该怎么做吗