2017-12-13 14 views
0

Wenn ich mehrere Widgets innerhalb eines Frames habe, gibt es eine Möglichkeit, alle Widget-Positionen gleichzeitig mit einem Befehl zu verschieben? Ich benutze den .place Manager. Vielen Dank!Tkinter Python: Mehrere Widgets gleichzeitig verschieben

+1

Sie können 'Frame' mit allen Elementen gleichzeitig verschieben - oder Sie müssen jedes Element separat verschieben. Entferne 'Frame' (oder jedes Element) mit' place_forget() 'und setze es erneut mit' place() '. – furas

+0

Ich empfehle Ihnen, ein bisschen mehr darüber zu erklären, was Sie erreichen möchten. Wenn Sie eine Gruppe von Widgets als Gruppe verschieben möchten, gibt es wahrscheinlich eine bessere Lösung als die Verwendung von 'place'. –

Antwort

1

würde ich Variablen definieren ref_y und ref_y und fügen Sie sie einfach zu meinem aktuellen x und y Wert wie in:

import tkinter as tk 

root = tk.Tk() 

ref_x = 40 
ref_y = 56 

btn = tk.Button(root, text="Button") 
lbl = tk.Label(root, text="Label") 

btn.place(x=ref_x + 45, y=ref_y + 13) 
lbl.place(x=ref_x + 13, y=ref_y + 44) 

root.mainloop() 

Im obigen Beispiel btn und lbl mit referece zu ref_x und ref_y platziert werden. Das heißt, wenn Sie die Widgets an einer anderen Stelle platzieren möchten, müssen Sie nur die Werte ref_x und ref_y ändern.

0

Wenn Sie alle in Frame haben, dann können Sie Frame verschieben und es wird mit allen Elementen nach innen bewegen.

Verwenden Sie place_forget(), um es aus dem Fenster zu entfernen, und verwenden Sie erneut place(), um eine neue Position einzugeben.

import tkinter as tk 
import random 

# --- funtions --- 

def move(): 
    # hide frame 
    f.place_forget() 

    # random positiom 
    new_x = random.randint(0, 100) 
    new_y = random.randint(0, 150) 

    # show in new place 
    f.place(x=new_x, y=new_y) 

# --- main --- 

root = tk.Tk() 

f = tk.Frame(root) 
f.place(x=0, y=0) 

tk.Label(f, text='HELLO!').pack() 
tk.Button(f, text='Move it', command=move).pack() 

root.mainloop() 
Verwandte Themen