2011-05-27 1 views
3

Je suis totalement nouveau à Tk et le concept d'emballage, alors portez-moi. Voici mon code:Dans Tk avec Python, comment spécifier un cadre ou un canevas à redimensionner avec ma fenêtre?

from Tkinter import * 

class frm_main: 

    def __init__(self, parent): 
     self.frame = Frame(parent, bg="green") #green for testing 
     self.frame.pack(fill="both") 

     self.canvas = Canvas(self.frame, bg="black", width=1000, height=700) 
     self.canvas.pack(fill="both") 

root = Tk() 
main_frm = frm_main(root) 
root.mainloop() 

J'ai essayé plusieurs options différentes et des tests et il semble que le cadre et la toile sont chacun ancrés et l'expansion dans la direction x, mais le redimensionnement dans la direction y laisse un tas de vide espace.

Comment puis-je ancrer le Cadre sur tous les côtés de ma fenêtre, puis sur la toile pour l'ancrer à tous les côtés de mon cadre? Devrais-je même utiliser un cadre?

Répondre

5

Définissez expand = 1 dans les appels à pack() pour que les widgets s'ajustent lorsque leurs conteneurs sont redimensionnés.

self.frame.pack(fill = "both", expand = 1) 
... 
self.canvas.pack(fill = "both", expand = 1) 

Vous pouvez utiliser un cadre pour regrouper un ensemble de widgets ou ajouter une bordure supplémentaire, mais dans cet exemple il n'y a pas besoin pour le cadre.

Questions connexes