Seite 1 von 1

Kreissektoren als Widgets?

Verfasst: Mittwoch 2. August 2006, 14:59
von _Sebastian_
Hallo,

ich hatte bisher mit GUIs unter Python nicht viel am Hut, also entschuldigt bitte, falls ich dumm frage :)

Was ich machen will, ist:
Einen Kreis in eine zur Laufzeit festgelegte Anzahl an gleichgroßen Sektoren aufzuteilen, dem User die Möglichkeit geben, in jeden Sektor zu schreiben und den Sektor als ganzes (mit Beschriftung) per Drag'n Drop innerhalb des Kreises zu verschieben.

Ich habe allerdiungs keine Idee, ob das überhaupt möglich ist und wenn ja, wie? (Stichwort Vektorgrafiken?)


Grüße
Sebastian

Verfasst: Donnerstag 3. August 2006, 22:04
von Michael Schneider
Hi Sebastian,

das sollte mit Tkinter gar kein Problem darstellen. :D

Erstmal erstellst Du einen Canvas.

Für die Tortenstücke (habe ich so verstanden) nimmst Du Bögen (Methode Canvas.create_arc) mit der Ressource style=PIESLICE. Damit werden die Enden der Bögen mit ihrem Mittelpunkt verbunden - voila Tortenstück.

Text erzeugst Du mit Canvas.create_text. Für die Kombination Text-Tortenstück verwendest Du am besten eine eigene Klasse, dann kannst Du DnD und Positionierung des Textes im Segment weitgehend automatisieren.

Für das Drag&Drop verwendest Du einfach Bind-Methoden für <ButtonPress>, <Motion> und <ButtonRelease>.

Frage: was meinst Du mit "innerhalb des Kreises verschieben"? Genau genommen ist eine Rotation um den Mittelpunkt keine "Verschiebung", aber ich vermute, dass Du genau das vorhast.

Abschließend eine Warnung: die Grafiken sind in dieser Form nur für den Bildschirm bzw. für die Ausgabe als postscript-Datei geeignet (...die Du nachträglich natürlich noch manuell umwandeln kannst).

Noch Fragen?

Grüße,
der Michel

Verfasst: Donnerstag 3. August 2006, 22:19
von _Sebastian_
Hallo Michael,

vielen Dank für deine ausführliche Antwort! Werde das morgen gleich versuchen.

Das mit dem Verschieben war so gemeint: Ich nehme mir ein Tortenstück heraus, verschiebe dann z.B. die zwei nächsten Tortenstücke dorthin, wo jetzt freier Platz ist und setze dann mein herausgenommenes Tortenstück dort ein, wo jetzt "zwei Tortenstücke weiter" was frei geworden ist.

Mal sehen ob ich das mit deiner Hilfestellung hier hinbekomme :)

Grüße
Sebastian

Verfasst: Donnerstag 3. August 2006, 22:38
von Michael Schneider
Hallo Sebastian,

es ist heute leider schon zu spät und das Wochenende bin ich unterwegs, sonst hätte ich Dir das Programm schnell geschrieben. ;-)

DragNDrop ist nicht unbedingt trivial zu programmieren, zumindest in Kombination mit einer Positionierung in einem Kreis. Wenn es nur um Reihenfolge und Offset geht, empfehle ich Dir Schieberegler und eine Liste mit Knöpfen zum Vertauschen von Tortenstücken. Damit kannst Du auf einfachste Weise alles darstellen.

Schreib mir bitte eine Mail oder PN, wenn Du ganz spezielle Fragen hast, sonst poste sie hier. Ich bin spätestens Montag wieder da.

Grüße und schönes WE,
der Michel