- Nogs,
Bonjour à tous, Je suis en train de construire un interface graphique avec Tkinter.
Je dispose d’une fenêtre avec deux canvas, mon objectif est que ces canvas s’étendent sur l’axe Y pour le canvas de gauche et sur les deux axes pour le canvas de droite le problême est que même s’il me semble avoir passé les bons paramètres au gestionnaire de positionnement (en l’occurrence fill et expand) ces deux Widgets gardent désespérément la même taille lorsque l’on redimensionne la fenêtre. Je suppose que cela est due au frames dont hérite les canvas mais voici le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import tkinter as tk from tkinter import BOTH, BOTTOM, TOP, LEFT, RIGHT, HORIZONTAL, VERTICAL, X, Y, NW, YES class DoubleCanvas(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.pack() # Left Canvas self.left_frame = tk.Frame(self) self.left_canvas = tk.Canvas(self.left_frame, bg='#FFFFFF', width=300, height=300, scrollregion=(0, 0, 500, 500)) hbar = tk.Scrollbar(self.left_frame, orient=HORIZONTAL) hbar.pack(side=BOTTOM, fill=X) hbar.config(command=self.left_canvas.xview) vbar = tk.Scrollbar(self.left_frame, orient=VERTICAL) vbar.pack(side=RIGHT, fill=Y) vbar.config(command=self.left_canvas.yview) self.left_canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set) self.left_canvas.pack(side=RIGHT, expand=True, fill=Y) self.left_frame.pack(side=RIGHT, expand=True, fill=Y) # Right Canvas self.right_frame = tk.Frame(self) self.right_canvas = tk.Canvas(self.right_frame, bg='#FFFFFF', width=300, height=300, scrollregion=(0, 0, 500, 500)) hbar = tk.Scrollbar(self.right_frame, orient=HORIZONTAL) hbar.pack(side=BOTTOM, fill=X) hbar.config(command=self.right_canvas.xview) vbar = tk.Scrollbar(self.right_frame, orient=VERTICAL) vbar.pack(side=RIGHT, fill=Y) vbar.config(command=self.right_canvas.yview) self.right_canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set) self.right_canvas.pack(side=LEFT, expand=True, fill=BOTH) self.right_frame.pack(side=LEFT, expand=True) if __name__ == '__main__': root = tk.Tk() root.title("Double Canvas") app = DoubleCanvas(master=root) app.mainloop() |
Toute aide sera la bienvenue.
+0
-0