1
正試圖弄清楚如何將我自己的自定義信號與QStateMachine結合使用。我從一個簡單的例子開始,從here。現在我試圖創建一個新的信號mysignal
並觸發它的轉換。但我無法弄清楚如何構建對addtransition
的調用,或者如何使用SIGNAL("clicked()")
語法來引用mysignal
。如何通過QStateMachine addtransition使用自定義信號
from PyQt4.QtGui import *
from PyQt4.QtCore import *
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
button = QPushButton()
machine = QStateMachine()
off = QState()
off.assignProperty(button, 'text', 'Off')
off.setObjectName('off')
on = QState()
on.setObjectName('on')
on.assignProperty(button, 'text', 'On')
mysignal = pyqtSignal()
off.addTransition(mysignal, on)
# Let's use the new style signals just for the kicks.
on.addTransition(button.clicked, off)
machine.addState(off)
machine.addState(on)
machine.setInitialState(off)
machine.start()
mysignal.emit()
button.resize(100, 50)
button.show()
sys.exit(app.exec_())
謝謝。我還有一個問題似乎不值得再次參與。我嘗試使用'assignProperty(self,'doOnTick',self.doOnTick_foo)',其中'doOnTick'是連接到定時器的方法。我的目標是每次定時器滴答時都會運行一個函數,根據狀態機器的狀態做一些不同的事情。我從來沒有能夠得到這個工作。 – gggg
@gggg。發佈一個新問題總是最好的,特別是當它在一個新的話題上。搜索無法找到評論中的問題,也無法回覆。此外,在這種情況下,我認爲您需要展示一些可測試的示例代碼,因爲如果沒有它,很難診斷問題。 – ekhumoro