pyq中QStackedWidget的更改索引

2024-05-16 02:30:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个QListWidget和一个QStackedWidget。QListWidget显示QStackedWidget中小部件的名称。在QListWidget中,您可以通过拖放来重新排列小部件的顺序。在

所以我的问题是,如何更新QStackedWidget中更改的订单?在

下面是一个最小的示例来说明问题:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class TestWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.layout    = QtGui.QHBoxLayout(self)
        self.stack     = QtGui.QStackedWidget(self)
        self.item_list = QtGui.QListWidget(self)
        self.item_list.setDragEnabled(True)
        self.item_list.setDragDropMode(QtGui.QAbstractItemView.InternalMove)

        self.layout.addWidget(self.item_list)
        self.layout.addWidget(self.stack)

        for i in range(10):
            b_name = "Button %04i" % i
            i_name = "Item   %04i" % i
            self.stack.addWidget(QtGui.QPushButton(b_name, self))
            self.item_list.addItem(i_name)

        self.item_list.currentRowChanged.connect(self.stack.setCurrentIndex)


if __name__ == "__main__":
    app    = QtGui.QApplication(sys.argv)
    widget = TestWidget()

    widget.show()
    sys.exit(app.exec_())

Tags: nameimportselfstack部件sysitemlist
1条回答
网友
1楼 · 发布于 2024-05-16 02:30:27

在查找QStackedWidget示例时发现此问题。可能不再需要了,但我会考虑不尝试重新排列堆叠小部件中的顺序。相反,我将保留一个python字典,它使用列表名称作为键,并将堆栈中的索引用作值。然后,当列表的值发生变化时,查找索引并设置为堆栈的该部分。在

似乎要比动态更正堆栈少很多工作。在

相关问题 更多 >