我在 Tkinter 中编写了一些GUI程序。我尝试使用 Text.get()方法跟踪Text小部件的内容。
我听说我可以得到(1.0,&#39;结束&#39;)来获取小部件上写的当前内容,但它并没有提供我输入的最新字符。< / p>
这是我写的一个简单例子:
import Tkinter as tk
class TestApp(tk.Text, object):
def __init__(self, parent = None, *args, **kwargs):
self.parent = parent
super(TestApp, self).__init__(parent, *args, **kwargs)
self.bind('<Key>', self.print_contents)
def print_contents(self, key):
contents = self.get(1.0, 'end')
print '[%s]' % contents.replace('\n', '\\n')
if __name__ == '__main__':
root = tk.Tk()
app = TestApp(root, width = 20, height = 5)
app.pack()
root.mainloop()
如果我输入&#39; abcd&#39;,则会打印&#39; abc \ n&#39;,而不是&#39; abcd \ n&#39;。 (&#39; \ n&#39;在文本小部件的最后一行之后自动添加。)
我怎样才能获得abcd \ n&#39;而不是&#39; abc \ n&#39;?
[解决]
感谢 Bryan Oakley 和 Yasser Elsayed ,我通过替换解决了这个问题
self.bind('<Key>', self.print_contents)
以下内容:
self.bind('<KeyRelease>', self.print_contents)
答案 0 :(得分:2)
这是由于事件处理程序的时间安排,它会在事件发生后立即执行,这意味着Text小部件实际上无法实际获取键入的键。这里有两个选项,只需将事件处理程序中的key
参数附加到Text.get()
结果,或绑定到<KeyRelease-A>
,例如,如果您正在侦听特定键(在这种情况下为A
)。