如何将qqslider从qqslider连接到group5

2024-09-30 16:38:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个滑块回调。但由于我制作的滑块是groupbox函数的一部分。我不确定如何将其连接起来:

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)

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


Tags: nameselfdefstepsminqtmaxslider
2条回答

findChild返回的是QSlider对象,您可能正在打印它,得到类似于:

<PyQt5.QtWidgets.QSlider object at 0x7f6c521dedc8>

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

所以我可以用那个东西

^{pr2}$

从类的角度来看,虽然从类的角度来看,可以继承一个更好的选择权,但可以从类的角度来创建一个更脏的选项:

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)

上面给出了一个标识,因为它是一个通过抽象内部元素来显示某些属性的类。在

有几个选项可供选择。您只需从函数中返回几个小部件:

def create_example_group(...) # python naming convention!
    ...
    return group_box, slider

 self.a_group, a_slider = self.create_example_group(...)
 a_slider.changeValue.connect(...)

另一种方法是给slider一个唯一的名称,并使用findChildren或类似的方法来查找小部件。在

相关问题 更多 >