TkDesigner

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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 :D

gruss
mawe
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! :D
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) :wink:

Code: Alles auswählen

b = Button()
conf_keys = [x for x in b.config().keys() if len(x)>2]
So filterst Du gleich die Doppelten raus (das sind die einzigen mit nur 2 Buchstaben, jedenfall hoffe ich das).

Gruß, mawe
rayo
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
mawe
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 :wink:
Wie wär's, wenn beim Start schon ein Window erzeugt und selektiert wird (Sonderwunsch eines faulen Deppen :D).

Gruß, mawe
rayo
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 :D.

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)
mawe
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? :wink:

Gähn... ich meine Gruß, fauler mawe
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Ja nur wenn du gleich 2 Buttons und ein Entryfeld möchtest musst du immer hin und her klicken weil dann der Container nicht mehr selektiert ist.

Welches ist besser? :D

gruss
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

rayo hat geschrieben: Ja nur wenn du gleich 2 Buttons und ein Entryfeld möchtest
Ich bin faul, nich hyperaktiv! :D

Gruß, mawe
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

hast du den Tree schon mal verwendet?

Der hat ein wenig eine unglückliche BoundingBox zum Nodes anwählen, nämlich nur das Icon, nicht aber der Text. Ist ein bisschen blöd zum bedienen.

Gruss
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:

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:
...
Jetzt kannst Du überall klicken :wink:. Das is nur mal ein schneller Hack, *gähn*, funktioniert aber. Ich schaus's mir morgen noch mal an (wenn ich etwas munterer bin :D).

Gute Nacht, mawe
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

also irgendwie funktioniert das bei mir nicht :D

aber kannst dir zeit lassen, wenn du es ändern kannst mach ich weiter an der implementation, hab da noch genug zu tun.

gruss
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Ich hab eine Zeile weiter unten vergessen :oops:. Hier kannst Du die Datei runterladen, dann brauchst nicht selbst tippen :wink:.

Gruß, mawe
rayo
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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Schon erledigt, selber Link wie vorher. (Immer diese Extrawünsche :D)

Gruß, mawe
rayo
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
Antworten