#python #qt #pyqt
#python #qt #pyqt
Вопрос:
У меня есть приложение в PyQt с несколькими кнопками для переключения между режимами приложения.
У меня есть сигналы clicked() кнопок, связанные с соответствующими методами. Моя проблема в том, что существуют другие способы изменения режимов (например, загрузка настроек автоматически переведет пользователя в режим по умолчанию), и я использую QPushButtons в качестве индикаторов «активного режима». Ранее это было достигнуто за счет наличия двух значков для каждой кнопки, один для кнопки выключен, а другой для кнопки включен. Все это было разработано в QtDesigner, поэтому нажатие на одну кнопку включает ее (и отключает другие кнопки) и соответствующим образом изменяет значки. И когда мышь отпущена, эта кнопка остается включенной.
Кнопка остается включенной до тех пор, пока не будет нажата другая кнопка.
Я пытаюсь выяснить, как я могу изменить кнопку с «вкл.» на «выкл.» без фактического нажатия пользователем кнопки, чтобы я мог соответствующим образом изменять режимы.
В документах Qt содержится ссылка на свойство, которое я ищу, но я не могу найти никаких подробностей, кроме факта существования этих состояний:
Наиболее важными режимами или состояниями являются:
Доступно или нет (выделено серым цветом, отключено).
Стандартная кнопка, кнопка переключения или кнопка меню.
Включено или выключено (только для переключения кнопок).
По умолчанию или нормально. Кнопка по умолчанию в диалоговом окне обычно может быть «нажата» с помощью клавиши ввода или возврата.
Автоматическое повторение или нет.
Нажата или нет.
(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()