如何为两个QListWidgets使用一个Qscrollbar

How to use one Qscrollbar for two QListWidgets

我想通过仅使用一个 QScrollBar 同时滚动两个不同的 QListWidgets。一种方法是将 QScrollBar changeValue() 信号连接到两个 QListWidgets,但我不知道该怎么做。

也欢迎不同的解决方案(但必须有两个QListWidgets

GUI 示例

您只需将一个列表小部件的滚动条的 valueChanged 信号连接到另一个列表小部件的滚动条的 setValue 方法。这样做会在滚动第一个列表小部件时滚动第二个列表小部件。

您需要对两个列表小部件都执行此操作,以便任何列表小部件的滚动都会滚动另一个。

from PyQt5.QtWidgets import QWidget, QHBoxLayout, QListWidget, QApplication


class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setupUI()
        self.list1.addItems(['Asia Pacific',  'Europe', 'Middle East', 'Africa', 'America']*5)
        self.list2.addItems(['AP', 'EU', 'ME',  'AF', 'AM']*5)
        self.list1.verticalScrollBar().valueChanged.\
            connect(self.list2.verticalScrollBar().setValue)
        self.list2.verticalScrollBar().valueChanged.\
            connect(self.list1.verticalScrollBar().setValue)

    def setupUI(self):
        layout = QHBoxLayout(self)
        self.list1 = QListWidget(self)
        self.list2 = QListWidget(self)
        layout.addWidget(self.list1)
        layout.addWidget(self.list2)
        self.setLayout(layout)


if __name__=="__main__":
    import sys
    app = QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec_())