¿Cómo se superponen los widgets / marcos en python tkinter?

Me preguntaba si esto es posible. Mi objective es tener un pequeño cuadro blanco en la esquina inferior derecha, en la parte superior de un campo de texto más grande. El cuadro blanco se usará como un “cuadro de información” mientras la persona se desplaza por el texto dentro del campo de texto.

Cuando digo “campo de texto” me refiero a Texto de tkinter.

La forma de colocar un widget encima de otros widgets es usar el administrador de geometría del place . Puede especificar una coordenada x / y relativa a algún otro widget, así como para especificar anchos y alturas absolutas o relativas.

El sitio de effbot tiene un informe decente sobre el administrador de geometría del lugar: http://effbot.org/tkinterbook/place.htm

Aquí hay un ejemplo simple:

 import Tkinter as tk class Example(tk.Frame): def __init__(self, parent): tk.Frame.__init__(self, parent) self.text = tk.Text(self, wrap="word") self.vsb = tk.Scrollbar(self, orient="vertical", command=self.text.yview) self.text.configure(yscrollcommand=self.text_yview) self.vsb.pack(side="right", fill="y") self.text.pack(side="left", fill="both", expand=True) # create an info window in the bottom right corner and # inset a couple of pixels self.info = tk.Label(self.text, width=20, borderwidth=1, relief="solid") self.info.place(relx=1.0, rely=1.0, x=-2, y=-2,anchor="se") def text_yview(self, *args): ''' This gets called whenever the yview changes. For this example we'll update the label to show the line number of the first visible row. ''' # first, update the scrollbar to reflect the state of the widget self.vsb.set(*args) # get index of first visible line, and put that in the label index = self.text.index("@0,0") self.info.configure(text=index) if __name__ == "__main__": root = tk.Tk() Example(root).pack(side="top", fill="both", expand=True) root.mainloop()