from Tkinter import *
from tkMessageBox import *
class Gui:
def __init__(self, root):
self.container = Frame(root)
self.container.grid()
self.inputText = Text(self.container, width=50, height=8)
self.outputText = Text(self.container, width=50, height=8, bg='#E0E0E0', state=DISABLED)
self.inputText.grid(row=0, column=0)
self.outputText.grid(row=0, column=1)
self.inputText.bind("<Key>", self.translate)
def translate(self, event):
input = self.inputText.get(0.0, END)
output = self.outputText.get(0.0, END)
self.outputText.config(state=NORMAL)
self.outputText.delete(0.0, END)
self.outputText.insert(INSERT, input)
self.outputText.config(state=DISABLED)
showinfo(message="Input: %s characters\nOutput: %s characters" % (len(input), len(input)))
root = Tk() #toplevel object
app = Gui(root) #call to the class where gui is defined
root.mainloop() #enter event loop
在tkinter中处理gui我对于事件处理程序运行的顺序有点困惑。如果你运行上面的代码,你会希望看到...python gui events out of order
1)编辑文本小部件会触发事件处理程序,但它似乎没有注册实际更改而关闭它, 2)即使当文本小部件清除(即继续按BackSpace),它似乎仍然有一个字符长度的字符串, 3)输出小部件只在NEXT事件触发器被触发时才接收其更新,尽管事实上数据出现在上一个事件上。
这只是如何绑定tkinter工作或我在这里失踪的东西?
更新所述输入窗口小部件时,我想的行为是: 1)显示的变化, 2)输入的事件处理程序, 3)更新输出插件, 4)显示消息框。
感谢您抽出宝贵的时间输入Bryan,很多人解释说。 – dave 2010-03-21 14:17:50