在python中实现基于事件的状态机 tkinter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中实现基于事件的状态机 tkinter相关的知识,希望对你有一定的参考价值。
说我有一个派生的按钮和一个State_Machine类。这个状态机有一个叫做state的变量。点击按钮的事件应该将初始状态从0驱动到1,然后是2,然后是3,再到1,以此类推。我如何去实现这个功能?
import tkinter as tk
class myButtonClass(tk.Button):
...
...
self["command"]=self.Click
def Click()
MySM = StateMachine()
MySM.update_state()
class StateMachine:
...
...
def update_state():
...
...
print(self.state)
请大家评论一下,如果上面的编码选择似乎是正确的吗? 或者有其他更好的方法,在不改变类及其变量存在的情况下,可以做到这一点。我想维护这些类。
答案
你写模板代码的方式是一个新的 StateMachine
每次点击按钮时,都会产生一个固定的按钮。StateMachine
对象的调用之间的 Click()
一个简单而又丑陋的方法是使用一个全局变量来实现。
# one time init outside of the event callback
MySM = StateMachine()
def Click()
global MySM # retrieve the global state machine object
MySM.update_state() # change its state
以上是关于在python中实现基于事件的状态机 tkinter的主要内容,如果未能解决你的问题,请参考以下文章