如何将 Tkinter 文本小部件的 undo/redo 历史复制到另一个

How to copy the undo/redo history of a Tkinter Text widget into another

我有一个带有 Tkinter-based GUI 的程序,使用 Python 3.6.5.

我有一个临时的 window,里面有一些文本小部件(和其他东西)。当临时 window 关闭时,整个 window 被销毁。但是,我想在下次打开时保留 undo/redo 历史记录和某些特定文本小部件中的任何文本(和 re-built)。以另一种方式重新编程当然是可能的,但考虑到事物的设置方式,这可能是一项不必要且大量的工作(尽管如果您有任何想法,无论设置如何,您都应该工作,请随时告诉我)。更改设置可能很容易引入错误。

两个不同的 windows 具有不同的小部件需要在一些相似的小部件之间共享数据(我想扩展它以包括 undo-redo 历史记录)。我相信不同的 parents 是 window 被破坏的部分原因,但我可能是错的(可能还有其他原因)。

无论如何,我想知道,undo/redo 文本小部件的历史存储在哪里?如果我能以某种方式在 window 关闭之前复制它并将其放入新构建的小部件中(无论是哪个 window 构建的),那就太好了。

我正在添加 tk 标签,因为我查看了 tkinter 的 Python 源代码,但没有发现任何特别有用的东西(所以使用 TCL 等的人可能会知道)。

我意识到可能无法访问存储历史记录的变量,但我认为这值得一问,以防万一。

不,您不能保存文本小部件的 undo/redo 历史记录、销毁该小部件,然后将历史记录重新应用到新的小部件。

最好的解决办法是不要销毁小部件。只需隐藏它然后重新显示它而不是销毁它并重新创建它。