Python IDE IDLE 如何在光标位置的文本小部件顶部显示自动完成列表?

How does Python IDE IDLE shows autocompletion list on top of text widget at cursor position?

是否使用列表框?上下文菜单?在文本中插入小部件?还有别的吗?

此外,是否有一些关于 IDLE 功能的文档?哪些 python 文件做什么等?

autocompletewindow 是一个带有 ListboxScrollbar 的 tk Toplevel。代码在 idlelib/AutoCompleteWindow.py 中(相关代码在 AutoComplete.py 中)。

Idle 文档提供了用户对 Idle 的看法。没有文档提供程序员对 idlelib 的看法。 (我希望在我开始使用 Idle 时有一个。现在我明白了大多数文件的作用,我应该写点东西。)

编辑:通过将 geometry string 传递给 .geometry (== .wm_geometry) 方法,Tk 和 Toplevel 小部件相对于桌面定位。请注意,字符串的 'wxh' 部分可以省略以仅传递 '+x+y',如在空闲代码中一样。

CallTipWindow.position_windowwidget.winfo_rootx/y and Text.bbox 和偏移量计算 x 和 y。如果调用提示是通过键入 ( 触发的,则该框位于该字符周围。 AutoCompleteWindow.winconfig_event 做了类似的事情,但也使用了 winfo_width/height 方法。

编辑 2:弹出式菜单可以用 Menu.post(x, y), (or Menu.tk_popup) 定位,其中 x, y 是相对于根的。 (Working example)