Включение и выключение QPushButton

#python #qt #pyqt

#python #qt #pyqt

Вопрос:

У меня есть приложение в PyQt с несколькими кнопками для переключения между режимами приложения.

У меня есть сигналы clicked() кнопок, связанные с соответствующими методами. Моя проблема в том, что существуют другие способы изменения режимов (например, загрузка настроек автоматически переведет пользователя в режим по умолчанию), и я использую QPushButtons в качестве индикаторов «активного режима». Ранее это было достигнуто за счет наличия двух значков для каждой кнопки, один для кнопки выключен, а другой для кнопки включен. Все это было разработано в QtDesigner, поэтому нажатие на одну кнопку включает ее (и отключает другие кнопки) и соответствующим образом изменяет значки. И когда мышь отпущена, эта кнопка остается включенной.

Кнопка остается включенной до тех пор, пока не будет нажата другая кнопка.

Я пытаюсь выяснить, как я могу изменить кнопку с «вкл.» на «выкл.» без фактического нажатия пользователем кнопки, чтобы я мог соответствующим образом изменять режимы.

В документах Qt содержится ссылка на свойство, которое я ищу, но я не могу найти никаких подробностей, кроме факта существования этих состояний:

Наиболее важными режимами или состояниями являются:

  1. Доступно или нет (выделено серым цветом, отключено).

  2. Стандартная кнопка, кнопка переключения или кнопка меню.

  3. Включено или выключено (только для переключения кнопок).

  4. По умолчанию или нормально. Кнопка по умолчанию в диалоговом окне обычно может быть «нажата» с помощью клавиши ввода или возврата.

  5. Автоматическое повторение или нет.

  6. Нажата или нет.

(http://qt-project.org/doc/qt-5/QPushButton.html )

Чтобы быть более конкретным, я ищу способ увидеть состояние QPushButton; чтобы увидеть, «Включено» оно или «Выключено», и я ищу способ изменить это состояние.

РЕДАКТИРОВАТЬ: я нашел подходящий метод QPushButton.isOn(), но проблема в том, что он находится в Qt3. (Я использую Qt5, где этот метод больше не существует). Очевидно, что сейчас он устарел, кто-нибудь случайно не знает, что его заменило? http://doc.qt.digia.com/3.2/qpushbutton.html#isOn

Ответ №1:

QPushButton наследует от QAbstractButton и и, следовательно, имеет следующие методы: isChecked , setChecked и isCheckable , setCheckable . Таким образом, вы можете преобразовать кнопку в кнопку переключения и задать / установить состояние. Существует также setAutoRepeat и autoRepeat , который управляет автоматическим повтором программно.

Особенно вместо isOn использования isChecked .

Кроме того, он также наследует от QWidget which имеет методы isEnabled и setEnabled . С помощью этого вы можете активировать / деактивировать кнопку, которая отображается серым цветом кнопки, а также путем запрета нажатий на кнопку.

В основном просто изучите документацию для QAbstractButton и QWidget, чтобы увидеть, как вы можете программно взаимодействовать с QPushButton, чтобы включить / отключить его.

Комментарии:

1. Ни одно из этих свойств не является тем свойством, которое я искал. В итоге просто вызвал button_one.click()