pyqt5如何使复选框将两个Qslider锁定在一起[关闭]
Posted
技术标签:
【中文标题】pyqt5如何使复选框将两个Qslider锁定在一起[关闭]【英文标题】:pyqt5 how to make a checkbox lock two Qsliders together [closed] 【发布时间】:2021-11-23 21:45:45 【问题描述】:我使用在 python here 中运行的 Qt Designer 制作了一个 GUI
如何在我的项目中添加代码以添加一个复选框,该复选框将我的 Qslider 锁定在一起(无论它们的值是什么,0 - 100 范围)。见下图。
如果需要更多信息,请随时询问。
【问题讨论】:
“锁定”是指禁用两个滑块,还是同时更改它们的值? 嗨,好点。我已经编辑了原始帖子。我的意思是让他们的价值观一起改变,不管他们是什么。 0-100 范围 【参考方案1】:选中复选框时,您可以将每个滑块的 valueChanged
信号连接到另一个滑块的 setValue
插槽,未选中时断开连接。
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class Template(QWidget):
def __init__(self):
super().__init__()
vbox = QVBoxLayout(self)
vbox.addWidget(QSlider(Qt.Horizontal))
vbox.addWidget(QCheckBox('Lock', toggled=self.toggleLocked))
vbox.addWidget(QSlider(Qt.Horizontal))
def toggleLocked(self, state):
s1, s2 = self.findChildren(QSlider)
if state:
s2.setValue(s1.value())
s1.valueChanged[int].connect(s2.setValue)
s2.valueChanged[int].connect(s1.setValue)
else:
s1.valueChanged[int].disconnect()
s2.valueChanged[int].disconnect()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Template()
window.show()
sys.exit(app.exec_())
【讨论】:
谢谢另一个问题 我如何使它像在混音器中一样成为比例锁定?锁定时,它们在锁定前保持相同的值。与滑块 A 设置 50 一样。滑块 B 设置 10。所以直到滑块 A 的值达到 100 和 10 之前,它们都将是 10 并保持锁定状态,直到另行通知? @Love-to-Make 我不明白你的例子。如果您希望它们按比例移动,那么这将是它们的值的比率,在本例中为 5/1 或 1/5。 我不确定如何描述它。您的示例工作正常。如果slider_A 设置为75,slide_B 设置为80,我单击锁定按钮,我希望它保持该比率,直到它们通过我移动任何滑块再次排列。例如,单击并将 slide_A 拖动到 100。slide_B 将向上移动并首先到达 100 并停留在那里直到 slide_A 到达那里,反之亦然 @Love-to-Make 好的,为了清楚起见,如果 slider_A 移动到 60,slider_B 应该移动到 64 (A * 80 / 75) 还是 65 (A + 5)?跨度> 不,滑块可以很容易地以完全不同的数量坐下,就像幻灯片 A 设置为 10 和幻灯片 B 设置为 50。以上是关于pyqt5如何使复选框将两个Qslider锁定在一起[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5:添加lineEdit的子类QSlider(用于在QtDesigner中提升)?