Hi
Mein vorheriges Projekt ist erstmals auf Eis gelegt.
Bis jetzt hat es mich immer gestört dass man die GUI immer von Hand schreiben muss (komme halt von der Delphi-Ecke).
Ich hab oder besser bin dran ein GUI-Designer für TKinter zu schreiben.
Bis jetzt funktioniert noch nicht soviel, nur möcht ich mal wissen ob mein Grundkonzept des Programms tauglich ist.
-unterstütze Widgets bis jetzt: Toplevel,Frame,Button,Label,Entry
-noch nicht alle Keys für Config werden unterstützt, daran Arbeite ich gerade, ist halt viel Abschreibarbeit nötig nach dem System wie ich es mache
-Verwendet wird der Manager Pack.
-Speichern oder Exportieren kann man noch nicht.
Also nicht wirklich Verwendbar bis jetzt, bin aber fleissig am arbeiten.
Fehler müsst ihr mir noch keine melden, ausser solche, die beim starten kommen oder solche die die benutzung des programms verunmöglichen, hab die GUI noch nicht komplett überprüft.
Ich werde dann immer in diesen Thread schreiben falls es Updates geben wird, wenn überhaupt Interesse besteht.
tkdesigner.zip
Erklärung GUI:
links wird der Widget-Tree angezeigt
'-' bedeutet dass das Widget ein Unterelement ist
mit <pfeil rauf> verschiebt ihr das Widget eins rauf (nur innerhalb der gleichen ebene, an den '-' erkennbar)
mit <pfeil runter> halt runter
mir <up dir> oder <down dir> (die komischen pfeile) verschieb ihr das Widget eine Ebene höher (ein '-' wird gelöscht) oder ein tiefer (in das nächste Widget)
und mit dem <x> löscht ihr es raus
um ein Widget hinzuzufügen muss das Parent-Element angewählt sein ausser bei den neuen Fenstern
der rest sollte glaubs klar sein
gruss
TkDesigner
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Das gefällt mir schon mal sehr gut!
rogen hat ja auch schon mal so etwas angefangen, allerdings place-basiert.
Wegen der Config-Keys: Die musst Du nicht abschreiben, und wenn dann vielleicht gleich die Doppelten rauslassen (z.B. bg, background)
So filterst Du gleich die Doppelten raus (das sind die einzigen mit nur 2 Buchstaben, jedenfall hoffe ich das).
Gruß, mawe
Das gefällt mir schon mal sehr gut!
rogen hat ja auch schon mal so etwas angefangen, allerdings place-basiert.
Wegen der Config-Keys: Die musst Du nicht abschreiben, und wenn dann vielleicht gleich die Doppelten rauslassen (z.B. bg, background)
Code: Alles auswählen
b = Button()
conf_keys = [x for x in b.config().keys() if len(x)>2]
Gruß, mawe
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Hi
Ich speicher eben nicht nur die Name der Keys sondern eben auch was für eine Eingabemaske es braucht.
Nur Entryfeld für Frei wählbare sache und eine Listbox für vordefinierte auswahl (wird auch gespeichert z.B. side) und noch ein Mix mit Entryfeld und Listbox für Keys mit vordefinierten Möglichkeiten und noch ne freie Auswahl (z.B. bitmap, error, info, ..., und @file-name)
Die Doppelten hab ich nun rausgenommen (Zip-Archiv nicht aktualisiert)
Wie ist das so mit der Bedienung? Vorallem wegen dem WidgetTree, gibt ja kein Widget für Treedarstellung oder?
Ach ja, gibt es ne möglichkeit die Fenster unschliessbar zu machen (klingt irgendwie lustig), nur das Hauptfenster soll man schliessen können
gruss
Ich speicher eben nicht nur die Name der Keys sondern eben auch was für eine Eingabemaske es braucht.
Nur Entryfeld für Frei wählbare sache und eine Listbox für vordefinierte auswahl (wird auch gespeichert z.B. side) und noch ein Mix mit Entryfeld und Listbox für Keys mit vordefinierten Möglichkeiten und noch ne freie Auswahl (z.B. bitmap, error, info, ..., und @file-name)
Die Doppelten hab ich nun rausgenommen (Zip-Archiv nicht aktualisiert)
Wie ist das so mit der Bedienung? Vorallem wegen dem WidgetTree, gibt ja kein Widget für Treedarstellung oder?
Ach ja, gibt es ne möglichkeit die Fenster unschliessbar zu machen (klingt irgendwie lustig), nur das Hauptfenster soll man schliessen können
gruss
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Von Haus aus ist kein Tree-Widget dabei, aber hier hab ich eines gefunden, das sehr nett aussieht.
Zur Bedienung: Es hat mich etwas verwirrt, daß man nachdem man ein Window generiert hat, dieses zuerst in der Listbox angeklickt werden muß, bevor man weitere Widgets hinzufügen kann. Vielleicht hätte ich auch einfach vorher Deine Beschreibung durchlesen sollen
Wie wär's, wenn beim Start schon ein Window erzeugt und selektiert wird (Sonderwunsch eines faulen Deppen ).
Gruß, mawe
Von Haus aus ist kein Tree-Widget dabei, aber hier hab ich eines gefunden, das sehr nett aussieht.
Zur Bedienung: Es hat mich etwas verwirrt, daß man nachdem man ein Window generiert hat, dieses zuerst in der Listbox angeklickt werden muß, bevor man weitere Widgets hinzufügen kann. Vielleicht hätte ich auch einfach vorher Deine Beschreibung durchlesen sollen
Wie wär's, wenn beim Start schon ein Window erzeugt und selektiert wird (Sonderwunsch eines faulen Deppen ).
Gruß, mawe
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Hi
Das Tree-Widget sieht nicht schlecht aus, mal schauen ob es einfach zum inplementieren ist .
Beim start ein Window erstellen und grad selektieren ist kein Problem und auch für die Faulen möglich .
gruss
*edit* dein wunsch ist schon drin, musst nur das zipfile neu herunterladen
Jetzt erstellt es ein Window am Anfang und wenn du neue Fenster oder Frames hinzufügst, wird dieses auch selektiert (Container)
Das Tree-Widget sieht nicht schlecht aus, mal schauen ob es einfach zum inplementieren ist .
Beim start ein Window erstellen und grad selektieren ist kein Problem und auch für die Faulen möglich .
gruss
*edit* dein wunsch ist schon drin, musst nur das zipfile neu herunterladen
Jetzt erstellt es ein Window am Anfang und wenn du neue Fenster oder Frames hinzufügst, wird dieses auch selektiert (Container)
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Hervorragend!
Allerdings: Wenn ich z.B. einen Button erzeuge, muß ich den in der Listbox anklicken, um seine Eigenschaften ändern zu können. Du weißt worauf ich hinaus will?
Gähn... ich meine Gruß, fauler mawe
Hervorragend!
Allerdings: Wenn ich z.B. einen Button erzeuge, muß ich den in der Listbox anklicken, um seine Eigenschaften ändern zu können. Du weißt worauf ich hinaus will?
Gähn... ich meine Gruß, fauler mawe
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Da hast Du recht. Kannst aber relativ leicht ändern: Schreib bei Zeile 159 einfach das:
Jetzt kannst Du überall klicken . Das is nur mal ein schneller Hack, *gähn*, funktioniert aber. Ich schaus's mir morgen noch mal an (wenn ich etwas munterer bin ).
Gute Nacht, mawe
Da hast Du recht. Kannst aber relativ leicht ändern: Schreib bei Zeile 159 einfach das:
Code: Alles auswählen
# single-click to expand/collapse
if self.indic:
sw.tag_bind(self.label, '<1>', self.PVT_click)
sw.tag_bind(self.indic, '<1>', self.PVT_click)
sw.tag_bind(self.symbol, '<1>', self.PVT_click)
else:
...
Gute Nacht, mawe
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Hi
funktioniert prächtig, danke
kann man auch folgende änderung enifach machen?
Dass eine Node nur bei Doppelklick geöffnet und geschlossen wird und nicht bei einem einfachen klick?
Muss nicht sofort sein, ist ja nicht wirklich wichtig für das programm
gruss
funktioniert prächtig, danke
kann man auch folgende änderung enifach machen?
Dass eine Node nur bei Doppelklick geöffnet und geschlossen wird und nicht bei einem einfachen klick?
Muss nicht sofort sein, ist ja nicht wirklich wichtig für das programm
gruss
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Habe noch einen Extrawunsch. Jetzt kann man aber die Node, die Expandable sind nicht mit einem Klick anklicken sondern muss sie Doppelklicken damit sie angewählt und leider auch geöffnet und -schlossen wird.
Aber nur falls es nicht zuviel Arbeit ist.
mmm noch was, irgendwie spinnt Tkinter auf meinem Laptop. Es hängt irgendwie ne weile beim start und der tree funktioniert nicht mehr mit anklicken. Hab schon Python23 mal neu installiert, aber hat sich nichts geändert. Ok es stimmt sowieso irgendetwas damit nicht mehr, Drag'n'Drop geht gar nicht mehr.
*edit* laptop problem hat sich in luft aufgelöst nach einem windoof update
Gruss
Aber nur falls es nicht zuviel Arbeit ist.
mmm noch was, irgendwie spinnt Tkinter auf meinem Laptop. Es hängt irgendwie ne weile beim start und der tree funktioniert nicht mehr mit anklicken. Hab schon Python23 mal neu installiert, aber hat sich nichts geändert. Ok es stimmt sowieso irgendetwas damit nicht mehr, Drag'n'Drop geht gar nicht mehr.
*edit* laptop problem hat sich in luft aufgelöst nach einem windoof update
Gruss