繁体   English   中英

Tkinter文本小部件的get()方法-不返回最后一个字符

[英]get() method of Tkinter text widget - doesn't return the last character

我正在Tkinter中编写一些GUI程序。 我正在尝试使用Text.get()方法来跟踪Text小部件的内容。
我听说我可以get(1.0,'end')来将当前内容写在小部件上,但是它不提供我键入的最新字符。

这是我写的一个简单示例:

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()

如果输入“ abcd”,它将显示“ abc \\ n”,而不是“ abcd \\ n”。 (“ \\ n”由“文本”小部件自动添加到最后一行之后。)

例

如何获得“ abcd \\ n”而不是“ abc \\ n”?


[解决了]

感谢Bryan OakleyYasser Elsayed ,我通过替换解决了问题

self.bind('<Key>', self.print_contents)

到以下内容:

self.bind('<KeyRelease>', self.print_contents)

例子2

这是由于事件处理程序的时间安排,事件处理程序会在事件发生后立即执行,这意味着“文本”小部件尚没有机会真正获得键入的键。 您在此处有两个选择,或者只是将在事件处理程序中获得的key参数附加到Text.get()结果中,或者将其绑定到<KeyRelease-A> ,例如,如果您正在侦听特定的key(在本例中为A案件)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM