【问题标题】:Implementing a event based State Machine in python tkinter在 python tkinter 中实现基于事件的状态机
【发布时间】:2020-08-02 08:11:28
【问题描述】:

假设我有一个派生按钮和一个 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)

如果以上似乎是正确的编码选择,请发表评论?或者还有其他更好的方法可以在不更改类及其变量的情况下这样做。我想维护这些类。

【问题讨论】:

    标签: python class button tkinter state-machine


    【解决方案1】:

    按照您编写模板代码的方式,每次单击按钮时都会创建一个新的StateMachine。 您需要在调用 Click() 之间有一个持久的 StateMachine 对象

    实现此目的的一种简单但丑陋的方法是使用全局变量:

    # 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
    

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多