gpt4 book ai didi

python - PyQt5,如何将 QSlider 从 QGroupBox 连接到函数

转载 作者:行者123 更新时间:2023-12-01 01:28:02 24 4
gpt4 key购买 nike

我想为 slider 创建回调。但由于我制作的 slider 是组框功能的一部分。我不确定如何连接它:

def createExampleGroup(self, name, interval, steps, min, max):
groupBox = QGroupBox(name)
slider = QSlider(Qt.Horizontal)
slider.setFocusPolicy(Qt.StrongFocus)
slider.setTickPosition(QSlider.TicksBothSides)
slider.setMinimum(min)
slider.setMaximum(max)
slider.setTickInterval(interval)
slider.setSingleStep(steps)
vbox = QVBoxLayout()
vbox.addWidget(slider)
# vbox.addStretch(1)
groupBox.setLayout(vbox)
return groupBox

def valueChange(self):
print ("Update Slider")

self.aGroup = self.createExampleGroup("SliderA",10,10,10,100)
self.bGroup = self.createExampleGroup("SliderB",10,10,10,100)

所以我不确定如何访问每个组中的 slider 并将它们连接到 valueChange。并且还让 valueChange() 根据 slider 进行不同的更新。我尝试了 self.aGroup.findChild(QSlider) 但它返回了一个地址,所以我不知道如何使用它。我使用组的原因是我可以添加其他小部件。

最佳答案

findChild 返回的是 QSlider 对象,您可能会打印它并得到类似的内容:

<PyQt5.QtWidgets.QSlider object at 0x7f6c521dedc8>

这只是返回__str__,您可以在How to print objects of class using print()?中找到更多信息。 .

所以我可以使用那个对象

slider = self.aGroup.findChild(QSlider)
slider.valueChanged.connect(self.valueChange)
<小时/>

虽然这个选项可能有点脏,但从设计的角度来看,更好的选择是创建一个继承自 QGroupBox 并共享信号的类:

class MyGroupBox(QGroupBox):
valueChanged = pyqtSignal(int)

def __init__(self, name, interval, steps, min, max):
super(MyGroupBox, self).__init__(name)
slider = QSlider(Qt.Horizontal)
slider.setFocusPolicy(Qt.StrongFocus)
slider.setTickPosition(QSlider.TicksBothSides)
slider.setMinimum(min)
slider.setMaximum(max)
slider.setTickInterval(interval)
slider.setSingleStep(steps)
slider.valueChanged.connect(self.valueChanged)
vbox = QVBoxLayout()
vbox.addWidget(slider)
# vbox.addStretch(1)
self.setLayout(vbox)

然后您可以通过以下方式使用它:

self.aGroup = MyGroupBox("SliderA",10,10,10,100)
self.bGroup = MyGroupBox("SliderB",10,10,10,100)
self.aGroup.valueChanged.connect(self.valueChange)

上面给出了一个身份,因为它是一个通过抽象内部元素来表现某些属性的类。

关于python - PyQt5,如何将 QSlider 从 QGroupBox 连接到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53175658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com