Pyqt5 iki Qslider'ı birlikte kilitlemek için bir onay kutusu nasıl yapılır [kapalı]

0

Soru

Burada python'da çalışan Qt Designer'ı kullanarak bir GUI yaptım

Kilitleyen bir onay kutusu eklemek için projeme nasıl kod ekleyebilirim (değerleri ne olursa olsun birlikte değişti. 0-100 aralığı) her iki Qslider'ım birlikte. Aşağıdaki resme bakın.

Lütfen daha fazla bilgiye ihtiyaç olup olmadığını sormaktan çekinmeyin.

New design

pyqt5
2021-11-23 21:45:45
1

En iyi cevabı

1

Her kaydırıcıyı bağlarsınız valueChanged diğerinin sinyalini ver. setValue onay kutusu işaretlendiğinde yuva yapın ve işaretlenmediğinde bağlantıyı kesin.

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_())
2021-11-25 02:45:39

Teşekkürler bir soru daha bir ses mikserinde olduğu gibi orantılı bir kilidi nasıl yapabilirim? kilitlendiklerinde kilitlenmeden önce aynı değerlerde kalırlar. Kaydırıcıdaki gibi Bir dizi 50. slayt B seti 10. Yani kaydırıcı Bir değer 100 ve 10'a ulaşana kadar ikisi de 10 olur ve aksi söylenene kadar kilitli kalır mı ?
Love-to-Make

@Aşk-için-Yapmak istemiyorum bunu anlamak sizin örnek. Orantılı olarak hareket etmelerini istiyorsanız, değerlerinin oranı, bu durumda 5/1 veya 1/5 olacaktır.
alec

I am değil emin ne için tarif. örneğiniz iyi çalışıyor .slider_A 75 olarak ayarlanmışsa ve slide_B 80 olarak ayarlanmışsa ve kilit düğmesine tıklarsam, kaydırıcılardan herhangi birini hareket ettirerek tekrar sıraya girene kadar bu oranda kalmasını istiyorum. örneğin, Slide_a'yı 100'e tıklayın ve sürükleyin. slide_B yukarı çıkıp önce 100'e ulaşacak ve slide_A oraya ulaşana kadar orada kalacak ve vice-verca
Love-to-Make

@Love-to-Make Tamam ve sadece açık olmak gerekirse, slider_A 60'a taşınırsa, slider_B 64'e (A * 80/75) veya 65'e (A + 5) taşınmalı mı?
alec

Hayır kaydırıcılar, A seti 10 ve B seti 50 gibi tamamen farklı bir miktarda kolayca oturabilirdi.
Love-to-Make

Ya da A'yı 100'de kaydırın ve B'yi 25'te kaydırın bir kilit tıklandığında pavucontrol'ün ses kanallarında sol ve sağ dengede olduğu gibi kalırlar
Love-to-Make

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................