连续不更新循环

时间:2014-06-05 17:25:11

标签: loops methods tkinter

我不再是Python的“新手”了,但我现在正在进入一个未知领域。 最近我正在解析一些找到的here逻辑电路代码。我从这段代码中学到了很多关于继承的实际用法。好东西。

在更改门上的输入之前,此代码中没有太多发生,因此必须使用解释器来操作输入。我厌倦了使用解释器,所以我研究了创建一个不会重新运行初始代码的连续循环的方法。

我发现Tkinter使用了一个连续循环,然后我可以用“after”方法中断它来更新当前运行代码的一些参数。

这很有效,但我很好奇是否有另一种和/或更好的方法。有人知道其中一个吗?

部分代码:

tk_TkGUI = Tk()
f_AndTest() ## Initialize the 'And' gate
tk_TkGUI.after(1000, f_ChangeAnInput) ## Invokes Tk 'after' method to update an input
tk_TkGUI.mainloop() ## Must be used in Windows with Tkinter

def f_ChangeAnInput():
    A1.B.set(0) ## Change A1.B from 1 to 0

2 个答案:

答案 0 :(得分:1)

如果你想要一个窗口,以这种方式使用Tkinter是完全没问题的。

顺便说一下,after并没有像你描述的那样中断循环。主循环简单地循环遍历事件队列并按顺序处理它们。当它到达终点时,它会等待更多事件。就像按键或移动鼠标一样,after只是将一些东西放入队列中以便稍后处理。它真的是那么简单。

答案 1 :(得分:0)

你可以使用线程。

import thread
def blaH:
    #All your code that isn't related to your tkinter stuffs in here
thread.start_new_thread(blaH,())

唯一的问题是你需要两种线程相互交流的新方法,例如global variables