LINUX.ORG.RU

Python3/PySide2: соответствие JSON-значения JSON-ключу в QComboBox

 , , ,


0

1

Приветствую. Постараюсь объяснить что нужно: имеется ряд QComboBox'ов, заполняемых нужными значениями из общего файла настроек settings (в формате JSON), при изменении выбранного значения в каждом комбобоксе - соответствующий ключ в settings получает выбранное в комбобоксе значение:

      self.repeatDelay = QSpinBox()
        self.repeatDelay.setMaximum(300)
        self.repeatDelay.setValue(settings["keyboard-repeat-delay"])
        self.repeatDelay.valueChanged.connect(self.on_repeat_delay_value_changed)

        self.repatRate = QSpinBox()
        self.repatRate.setMaximum(100)
        self.repatRate.setValue(settings["keyboard-repeat-rate"])
        self.repatRate.valueChanged.connect(self.on_repeat_rate_value_changed)

        self.caps_lock = QComboBox()
        for item in ["disabled", "enabled"]:
            self.caps_lock.addItem(item)
        self.caps_lock.setCurrentText(settings["keyboard-capslock"])
        self.caps_lock.activated.connect(self.on_caps_lock_text_changed)

        self.num_lock = QComboBox()
        for item in ["disabled", "enabled"]:
            self.num_lock.addItem(item)
        self.num_lock.setCurrentText(settings["keyboard-numlock"])
        self.num_lock.activated.connect(self.on_num_lock_text_changed)

        self.formLayout = QFormLayout()

        self.formLayout.addRow(QLabel("Layout:"), self.layoutName)
        self.formLayout.addRow(QLabel("Variant:"), self.variantName)
        self.formLayout.addRow(QLabel("Shortcut:"), self.shortcutName)
        self.formLayout.addRow(QLabel("Repeat delay:"), self.repeatDelay)
        self.formLayout.addRow(QLabel("Repeat rate:"), self.repatRate)
        self.formLayout.addRow(QLabel("CapsLock"), self.caps_lock)
        self.formLayout.addRow(QLabel("NumLock"), self.num_lock)

        self.setLayout(self.formLayout)

    def on_repeat_delay_value_changed(self):
        settings["keyboard-repeat-delay"] = self.repeatDelay.value()

    def on_repeat_rate_value_changed(self):
        settings["keyboard-repeat-rate"] = self.repatRate.value()

    def on_caps_lock_text_changed(self):
        settings["keyboard-capslock"] = self.caps_lock.currentText()

    def on_num_lock_text_changed(self):
        settings["keyboard-numlock"] = self.num_lock.currentText()
Однако, имеются другие комбобоксы, заполняемые данными уже из других json-файлов. В них будут отображаться ключи из этих файлов, и мне нужно получить соответствующее каждому ключу значение, чтобы по аналогичному выше сигналу - прописывать его в нужный ключ уже в settings-файле. Например, в комбобоксе выбран ключ «Language», которому соответствует значение «ru». Как это же значение передать ключу «keyboard-layout» уже в файле settings?

Например, в комбобоксе выбран ключ «Language», которому соответствует значение «ru». Как это же значение передать ключу «keyboard-layout» уже в файле settings?

Посмотреть при записи в settings какое значение соответствует ключу Language?

AntonI ★★★★★
()
Ответ на: комментарий от Sunderland93

Посмотреть в каком состоянии находиться нужный комбобокс например?

AntonI ★★★★★
()

Миша, всё фигня. МАЛАВАТА паттернов проектирования. Делай на QAbstractTableModel + QDataWidgetMapper. А там разберёшься как нужные данные вытянуть. Я на этих классах делал, когда нужно было мапить данные из БД в контролы на форме, в том числе и комбобоксы.

ox55ff ★★★★★
()

for item in [«disabled», «enabled»]

А булевых флагов там нет? А то видел перлы типа if x in (True, "true", "True", "TRUE"):

upcFrost ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.