У меня возник вопрос о правильном использовании QStateMachine
-System PyQt5
.Использовать QState.assignProperty с динамическими значениями во время выполнения
Использование
State.assignProperty(aLineEdit, "plainText", "Some text")
позволяет установить "Some text"
к plainText
-свойстве всякий раз, когда aState
активен.
Вопрос: Что делать, если "Some text"
не является постоянным или не известен перед исполнением? Мое намерение состоит в том, чтобы передать функцию (в отличие от подключения выражения partial
или lambda
к событию) вместо значения, которое даст соответствующее значение при вводе состояния.
Моя единственная идея эмулировать это поведение - подключить функцию, которая устанавливает свойство в aState.entered
. Однако я не доволен этим решением, потому что он смешивает места, где установлены свойства, и причина использования QStateMachine
заключается в том, чтобы избежать необходимости вручную устанавливать состояния самостоятельно.
Не будет ли динамическое свойство подорвать логику состояния машины? Если свойство может быть либо «A», либо «B», то это, по-видимому, подразумевает два разных состояния. – ekhumoro
@ekhumoro Можно сказать, что теперь я определяю состояние свойства (выраженное, например, методом), когда соответствующее состояние машины активно. Во всяком случае, я просто надеюсь (г), что есть способ использовать конечный автомат более гибким способом. – aisen
Гибкость обеспечивается сигналами 'enter' и' exit'. – ekhumoro