2017-09-20 1 views
1

Je sais que cela pourrait ressembler à une question similaire à une question déjà posée, mais le problème est que j'ai placé tous les widgets en utilisant .place (x = ?, y =?) Au lieu d'utiliser une grille tkinter comme la plupart des questions , thats pourquoi im me demandais si quelqu'un a une idée pour le faire fonctionner sans qu'il soit nécessaire de réécrire tout en utilisant la grille, voici un exemple de mon code:Redimensionner le widget Tkinter et la toile lors du redimensionnement de la fenêtre?

#canvas 
    self.fig.clear() 
    self.fig=plt.figure() 
    plt.gcf().subplots_adjust(left=0.16) 
    plt.xlabel(xlabel) 
    plt.ylabel(ylabel) 
    self.CS = plt.contour(X, Y, Z) 
    plt.plot(pointX, pointY, 'kx') 
    plt.clabel(self.CS, inline=1, fontsize=10) 
    self.canvas = FigureCanvasTkAgg(self.fig, self) 
    self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True) 
    self.canvas.tkcanvas.place(x=0,y=350,hight=400,width=400) 
    self.canvas.show() 
    #Label 
    label1 = tk.Label(self, text="Horizontal", font=LARGE_FONT) 
    label1.place(x = 20, y = 50,height=20) 
    label2 = tk.Label(self, text="Vertikal", font=LARGE_FONT) 
    label2.place(x = 120, y = 50,height=20) 

Merci

+2

Oui, c'est possible. Il y a un événement de redimensionnement de la fenêtre tkinter, et à chaque déclenchement, vous pouvez parcourir et ajuster la taille et la position de chaque widget. Mais faire ça serait ridicule. Il serait beaucoup plus facile et beaucoup plus efficace de simplement changer votre programme pour utiliser '.pack()' ou '.grid()'. –

+0

Ok, merci pour la réponse – Zitrone

+0

Hey @EthanField est-il possible de me donner un exemple sur la façon d'utiliser l'événement de redimensionnement de la fenêtre, parce que j'ai essayé d'utiliser la grille et jusqu'à présent, il ne cherche pas Je vous remercie. – Zitrone

Répondre

2

Eh bien, l'une des options est d'utiliser le positionnement relatif et la taille. Par exemple:

label1.place(relx=0.1, rely=0.25, relheight=0.1, relwidth=0.2) 

De cette façon, lorsque vous redimensionnez la fenêtre, cela devrait modifier la taille du widget en conséquence. Cependant, comme indiqué par @Ethan Field, il serait très douloureux de placer tous les widgets sur le formulaire en utilisant cette méthode.

Vous pouvez trouver plus d'informations here.