Quindi ho utilizzato il widget canvas in tkinter per creare una cornice piena di etichette con una barra di scorrimento. Tutto funziona bene eccetto che il frame si espande solo fino alla dimensione delle etichette posizionate al suo interno - Voglio che la cornice si espanda alla dimensione della tela genitore.Tkinter: come ottenere frame nella finestra della tela per espandere le dimensioni della tela?
Questo può essere fatto facilmente se utilizzo pack (expand = True) (che ho commentato nel codice sottostante) per il frame nell'area di disegno, ma poi la barra di scorrimento non funziona.
Ecco il bit appropriato di codice:
self.canvas = Canvas(frame, bg = 'pink')
self.canvas.pack(side = RIGHT, fill = BOTH, expand = True)
self.mailbox_frame = Frame(self.canvas, bg = 'purple')
self.canvas.create_window((0,0),window=self.mailbox_frame, anchor = NW)
#self.mailbox_frame.pack(side = LEFT, fill = BOTH, expand = True)
mail_scroll = Scrollbar(self.canvas, orient = "vertical",
command = self.canvas.yview)
mail_scroll.pack(side = RIGHT, fill = Y)
self.canvas.config(yscrollcommand = mail_scroll.set)
self.mailbox_frame.bind("<Configure>", self.OnFrameConfigure)
def OnFrameConfigure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
Ho anche fornito un'immagine con cornici colorate in modo da poter vedere quello che voglio dire. L'area rosa è la tela che ha bisogno di riempire dal mailbox_frame (Si può vedere la barra di scorrimento a destra):
Grazie