我有一个代码编辑器,可以自动完成并提供如下图所示的代码提示
我能够创建一个Autocompletion单词列表,并能够相应地过滤掉用户键入的内容。我决定将它放在一个带有滚动条的ListBox小部件中。但我怎么能像下面的照片一样定位
这是我的代码:
from tkinter import *
root=Tk()
text=Text(root)
text.pack()
...#Filtering part
l= Listbox(root,listvariable=finalList )#The list after being filtered
...#How to position it like the picture
root.mainloop()
答案 0 :(得分:0)
IDLE的AutoCompleteWindow / autocomplete_w(pre3.6 / current 3.6)模块中的winconfig_event函数具有此代码。
text = self.widget
text.see(self.startindex)
x, y, cx, cy = text.bbox(self.startindex)
acw = self.autocompletewindow
acw_width, acw_height = acw.winfo_width(), acw.winfo_height()
text_width, text_height = text.winfo_width(), text.winfo_height()
new_x = text.winfo_rootx() + min(x, max(0, text_width - acw_width))
new_y = text.winfo_rooty() + y
if (text_height - (y + cy) >= acw_height # enough height below
or y < acw_height): # not enough height above
# place acw below current line
new_y += cy
else:
# place acw above current line
new_y -= acw_height
acw.wm_geometry("+%d+%d" % (new_x, new_y))
我还没有真正阅读它,因为它完成了应该做的事情。它将弹出窗口的顶行放在光标线下方的行或上面一行的底行。从图像中可以看出,您可能需要调整x位置。