python - 如何为两个 QListWidgets 使用一个 Qscrollbar
问题描述
我想QListWidgets
只使用一个同时滚动两个不同的QScrollBar
. 一种方法是将QScrollBar
changeValue()
Signal 连接到两者QListWidgets
,但我不知道该怎么做。
也欢迎不同的解决方案(但必须有两个QListWidgets
)
图形用户界面示例
解决方案
您只需要将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_())
推荐阅读
- angular - 出现错误:''没有找到匹配的模板:'ca-sln'。”.Net Clean Architecture
- android - 使用 just_audio 和 audio_service 播放用户在 mediaItem 上停止的位置
- node.js - VS Code 集成终端在 Linux 上找不到 npm 命令
- typescript - Typescript 映射类型,其中仅保留可为空的属性并转换为字符串类型
- sql - 我需要什么 sql GP 用户原则来授予 CREATE 特权才能让我的触发器仍然工作?
- llvm - LLVM MachineCode,如何获取子虚拟寄存器(获取 64 位虚拟寄存器的低 32 位)?
- ruby - 运行 shopify-cli (ruby gem) 时未初始化的常量 Encoding::UTF_8 (NameError)
- php - 字符串中具有多个匹配项的正则表达式
- python - 如何让 python-isort 考虑我的 pypackage.toml 配置?
- sql - 将源更改为数据库后,SQL 语句对于 Microsoft Access 来说太复杂了