Bonjour,

Est il possible d'insérer (Tkinter ou directement avec tk) un Widget sans toucher à la géométrie de ceux déjà en place ? Un peut comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
#
try:
    import Tkinter as Tk
except:
    import tkinter as Tk
 
 
def insertwidget(master, w, opt, wmopt):
    if len(master.winfo_children()):
        wmgr = master.winfo_children()[0].winfo_manager()
    else:
        wmgr = 'pack'
    widget_list = []
    for widget in master.winfo_children():
        if wmgr == 'pack':
            widget_list.append((widget, widget.pack_info()))
        elif wmgr == 'grid':
            widget_list.append((widget, widget.grid_info()))
        elif wmgr == 'place':
            widget_list.append((widget, widget.place_info()))
    for widget in widget_list:
        widget[0].forget()
    if w.lower() == 'label':
        new_w = Tk.Label(master)
    elif w.lower() == 'button':
        new_w = Tk.Button(master)
    elif w.lower() == 'entry':
        new_w = Tk.Entry(master)
    elif w.lower() == 'text':
        new_w = Tk.Text(master) 
    elif w.lower() == 'canvas':
        new_w = Tk.Canvas(master)
    elif w.lower() == 'frame':
        new_w = Tk.Frame(master)
    new_w.config(opt)  
    if wmgr == 'pack':
        new_w.pack(wmopt)
    elif wmgr == 'grid':
        new_w.grid(wmopt)
    elif wmgr == 'place':
        new_w.place(wmopt)
    for widget in widget_list:
        if wmgr == 'pack':
            widget[0].pack(widget[1])
        elif wmgr == 'grid':
            widget[0].grid(widget[1])
        elif wmgr == 'place':
            widget[0].place(widget[1])
 
fen=Tk.Tk()
f1 = Tk.Frame(fen, width=600, height=200, bg='black')
f1.pack(side=Tk.TOP, padx=5, pady=10)
f2 = Tk.Frame(fen, bg='white')
f2.pack(side=Tk.TOP, padx=5, pady=10, fill=Tk.BOTH, expand=1)
l1 = Tk.Label(f2, bg='green', width=10)
l1.grid(row=0, column=0)
l2 = Tk.Label(f2, bg='red', width=10)
l2.grid(row=1, column=1)
Tk.Button(fen, text='Quitter', command=fen.quit).pack(side=Tk.LEFT,
    pady=5, padx=5)
Tk.Button(fen, text='Insérer', command=lambda: insertwidget(fen,
    'Label', {'bg': 'white', 'text': 'Test', 'bd': '0'}, {'pady': '5',
    'padx': '5', 'expand': '1', 'fill': 'x'})).pack(side=Tk.RIGHT,
    pady=5, padx=5)
fen.mainloop()
Mais sans toucher à l'existant.
Je ne parle pas de placer un Widget mais bien de l'insérer au même niveau que les autres.

Merci d'avance.