如何为两个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_())
我想通过仅使用一个 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_())