2017-01-09 2 views
1

QStateMachine 시스템의 PyQt5을 올바르게 사용하는 데 질문이 있습니다. QState.assignProperty를 런타임에 동적 값과 함께 사용

State.assignProperty(aLineEdit, "plainText", "Some text") 

aState가 활성화 될 때마다 plainText -property "Some text"에 설정할 수 있도록하여

.

질문 : 실행하기 전에 "Some text"이 일정하지 않거나 알려지지 않은 경우 어떻게됩니까? 제 의도는 상태 입력시 적절한 값을 산출하는 값 대신에 partial 또는 lambda 표현식을 이벤트에 연결하는 것과 달리 함수를 전달하는 것입니다.

이 동작을 에뮬레이션하는 유일한 방법은 속성을 설정하는 함수를 aState.entered에 연결하는 것입니다. 그러나 속성을 설정하는 장소와 QStateMachine을 사용하는 이유가 혼합되어 있기 때문에 수동으로 상태를 설정하지 않아도되므로이 솔루션에 만족하지 않습니다.

+1

동적 속성이 상태 시스템의 논리를 손상시키지 않았습니까? 속성이'A' 또는'B' 일 수 있다면, 그것은 두 개의 다른 상태를 암시하는 것처럼 보일 것입니다. – ekhumoro

+0

@ekhumoro 각각의 기계 상태가 활성화되었을 때 속성의 상태가 정의되는 방식 (예 : 메소드로 표현)은 지금 내가 말할 수 있습니다. 어쨌든, 저는보다 유연한 방법으로 상태 머신을 사용할 수있는 방법이 있기를 바랍니다. – aisen

+0

유연성은 '입력'및 '종료'신호에 의해 제공됩니다. – ekhumoro

답변

0

유일한 생각은 맞지만 상태가 입력 될 때 기능이 호출되도록 도우미 방법으로 고려해야합니다.