mawe hat geschrieben:...
Zeigst Du bitte auch wie Du's letztendlich gemacht hast

Läßt sich machen.
Mußte nur noch vorher es ein wenig kleiner Schreiben, das Ganze.
Das mit den Button-Koordinaten und Co, brauchte ich, um eben jenen Code zustande zu bringen, den Ihr unten sehen könnt:
Ein art Drag und Drop Effekt mit Button, also das Verschieben von Button, während das Programm/Sricpt läuft.
Code: Alles auswählen
from Tkinter import *
def MoveOrSave1(event): #ob und welcher Button bewegt werden soll
global GlobalV_MoveOnOff1, GlobalV_ButtonXY
GlobalV_ButtonXY = event
if GlobalV_MoveOnOff1 == False:
GlobalV_MoveOnOff1 = True
else: GlobalV_MoveOnOff1 = False
def MoveW(event): # hier findet die Bewegung statt.
if GlobalV_MoveOnOff1 == True:
x1, y1 = root.winfo_pointerxy() # liest die 'Bildschirm'-Koordinaten vom Button ein
GlobalV_ButtonXY.widget.place(x = x1 - int(root.winfo_rootx()) - 50,
y = y1 - int(root.winfo_rooty()) - 20)
# wird neu platziert: x & y = Koordinaten am 'Bildschirm'
# minus die Koordinaten des Fensters am Bildschirm (und die -50 u. -20)
# = neue Platzierung im Fenster.
# Die - 50 und 20, damit der Mauszeiger etwas im Button ist.
# Platziert wird immer. Unbeweglich nach weiterem Klick.
# Gloabele Variablen
GlobalV_MoveOnOff1 = False
# Grafische Elemente
root = Tk()
Button1 = Button(root, width = '35', height = '5', text = '1')
Button1.place(x=50,y=50)
Button1.bind('<Button-3>', MoveOrSave1)
Button1.bind('<Motion>', MoveW)
Button2 = Button(root, width = '35', height = '5', text = '2')
Button2.place(x=50,y=150)
Button2.bind('<Button-3>', MoveOrSave1)
Button2.bind('<Motion>', MoveW)
Button3 = Button(root, width = '35', height = '5', text = '3')
Button3.place(x=300,y=50)
Button3.bind('<Button-3>', MoveOrSave1)
Button3.bind('<Motion>', MoveW)
Button4 = Button(root, width = '35', height = '5', text = '4')
Button4.place(x=300,y=150)
Button4.bind('<Button-3>', MoveOrSave1)
Button4.bind('<Motion>', MoveW)
root.bind('<Motion>', MoveW) # Damit es nicht so ruckelt, das Button beim Verschieben
mainloop()
Fehlt nur, daß sowas schon als Code irgendwo rumliegt.
Mit Rechter Maustaste kann man dann eben ein Button auswählen, um es dann ebenfalls mit Rechts woanders abzulegen.
Schade nur, daß immer das letzte von Script generierte Button über den anderen ist, wenn sich diese überschneiden.
Und ständig wird halt eben die Funktion Motion abgefragt.
Mann könnte es zwar auf aktive Buttons beschränken, dann ist es aber alles andere als flüssig (also zumindest bei mir).
Hm... wenn man vielleicht irgendwo gezielt eine 'if'-Anweisung reintun könnte ... .
Aber ansonsten, wenn man mit Tkinter was proggen will, wo der Anwender die Möglichkeit haben soll, die Buttons nach seinen Wünschen Anordnen zu könne, ist dies denke ich, recht gut geeignet.
Das mit der Globalen Variable ist halt vermutlich nicht Ideall gelößt, was ich so neulich hörte.
Naja, Wer es verwenden will, und es Ihm/Ihr nicht paßt, muß es halt dementsprechend anpassen.
Aber das versteht sich ja wohl von selbst.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.