PYQT5 соединяет два QSpinBox

я хочу знать, как соединить два QSpinBox с условием, когда мы меняем значение одного из них, второе изменилось, я пробовал это с помощью дизайнера Qt

self.spinA.valueChanged['int'].connect(self.spinB.setValue)

значение всегда одно и то же; я пытался подключить метку к spinA и использовать ее значение, чтобы получить новое значение для spinB, но я не знаю, как сделать то же самое, чтобы изменить значение spinA на основе значения spinB и извините за мой английский; я могу лучше объяснить на своем родном языке

введите здесь описание изображения

введите здесь описание изображения


person seghier    schedule 01.05.2020    source источник


Ответы (1)


Добавьте действие в первый счетчик для каждого значения, измененного в счетчике, внутри действия измените значение второго счетчика в соответствии с соотношением между значениями, сделайте то же самое для второго счетчика, а ниже приведен пример кода.

импорт библиотек

из PyQt5.QtWidgets импорт * из PyQt5 импорт QtCore, QtGui из PyQt5.QtGui импорт * из PyQt5.QtCore импорт *

импорт системы

Окно класса (QMainWindow):

def __init__(self):
    super().__init__()

    # setting title
    self.setWindowTitle("Python ")

    # setting geometry
    self.setGeometry(100, 100, 600, 400)

    # calling method
    self.UiComponents()

    # showing all the widgets
    self.show()

    # method for widgets
def UiComponents(self):

    # creating spin box
    self.spin1 = QSpinBox(self)

    # setting geometry to spin box
    self.spin1.setGeometry(100, 100, 150, 40)

    # setting prefix to spin
    self.spin1.setPrefix("Width : ")

    # add action to this spin box
    self.spin1.valueChanged.connect(self.action_spin1)

    # creating another spin box
    self.spin2 = QSpinBox(self)

    # setting geometry to spin box
    self.spin2.setGeometry(300, 100, 150, 40)

    # setting prefix to spin box
    self.spin2.setPrefix("Height : ")

    # add action to this spin box
    self.spin2.valueChanged.connect(self.action_spin2)

# method called after editing finished
def action_spin1(self):

    # getting current value of spin box
    current = self.spin1.value()
    self.spin2.setValue(current)

    # method called after editing finished
def action_spin2(self):
    # getting current value of spin box
    current = self.spin2.value()
    self.spin1.setValue(current)

создать приложение pyqt5

Приложение = QApplication (sys.argv)

создать экземпляр нашего окна

окно = окно()

запустить приложение

sys.exit(App.exec())

person Rakshit Arora    schedule 14.05.2020
comment
спасибо попробую - person seghier; 14.05.2020