Seite 1 von 1
Suche ein Script das mir einfache Formulare baut
Verfasst: Sonntag 14. September 2008, 14:22
von Dr.Network
Hi,
da das total mühseelig ist immer wieder Formulare nach dem gleichem Schema zu basteln wollt ich fragen ob jemand schon was fertiges hat ich hab zwar angefangen selbst eins zu bauen aber

das muss verbessert werden
Code: Alles auswählen
list = [
[["statictext0", "Name:"],["varname01"],["varname02"]],
[["statictext1", "staticAdress"],["varname11"],["varname12"]]
]
print "### panel ###"
print "panel = wx.Panel(parent, size=(350, 250))"
print "###"
print "### sizer ###"
print "sizer = wx.FlexGridSizer(cols="+str(len(list))+", hgap=5, vgap=5)";
print "sizer.AddGrowableCol(1)"
print "###"
print "### Sizer fuer jeweiligen Zeilen ###"
for i in range(0,len(list)):
print list[i][0][0]+"Sizer = wx.BoxSizer(wx.HORIZONTAL)"
print "###"
print "### Zeilen werden gefuellt##"
for row in list:
print "### spalte 1 ###"
print row[0][0]+"Lbl = wx.StaticText(panel, -1, \""+row[0][1]+"\")"
print "sizer.Add("+row[0][0]+"Lbl, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)"
print "###"
print "### spalte 2 ###"
for i in range(1,len(row)):
print row[i][0]+" = wx.TextCtrl(panel, -1, '')"
print row[0][0]+"Sizer.Add("+row[i][0]+", 0, wx.EXPAND)"
print "###"
print "sizer.Add("+row[0][0]+"Sizer, 0)"
print "panel.SetSizer(sizer)"
Verfasst: Sonntag 14. September 2008, 14:47
von BlackJack
Igitt. Gibt's einen Grund warum Du nicht einfach den Code statt in die ``print``-Zeilen direkt in den Quelltext schreibst und das dann ausführst!? Warum der Umweg über eine Quelltextdatei?
Verfasst: Sonntag 14. September 2008, 14:53
von Dr.Network
ist erstmal total egal was wo wie reingeschrieben wird ich will nur ein Formular ganz einfach "wie" kann mir und dir egal sein, oder?
und alle GUI-Builder für wxPython kann man ja tatsächlich in den Müll schmeissen ich hab keinen einzigen gefunden der gut, schnell sichere Ergebnisse hergibt
Langsam macht mich das wütend da man dabei nur Zeit verliert schreckliche Fleißarbeit

Verfasst: Sonntag 14. September 2008, 15:19
von Lonestar
wenn du dich auch mit nem GUI-Builder anfreunden könntest kannst es ja evtl so wie ich versuchen. Habe als Anfänger auch was brauchbares gesucht. Und bin vorerst mal beim WxFormBuilder angelangt. Nicht das Nonplusultra aber für kurze Dialoge und Formulare reicht der und ist auch einfach zu bedienen. Der generiert auch XRC-Code. Irgendwie hab ichs aber noch nich geschafft das er mir auch ne XML-Datei mit dem generierten XRC-Code schreibt... mit copy/paste gehts aber behelfsmäßig auch. Wenn man die XRC-Datei dann in seiner Klasse einbindet hat man nebenbei auch schön den Aufbau der GUI von der Logik getrennt.
Für meine private Spielerei um nebenbei ein wenig was zu programmieren reicht das noch aus.
Verfasst: Sonntag 14. September 2008, 15:20
von Dr.Network
Lonestar hat geschrieben:wenn du dich auch mit nem GUI-Builder anfreunden könntest kannst es ja evtl so wie ich versuchen. Habe als Anfänger auch was brauchbares gesucht. Und bin vorerst mal beim WxFormBuilder angelangt. Nicht das Nonplusultra aber für kurze Dialoge und Formulare reicht der und ist auch einfach zu bedienen. Der generiert auch XRC-Code. Irgendwie hab ichs aber noch nich geschafft das er mir auch ne XML-Datei mit dem generierten XRC-Code schreibt... mit copy/paste gehts aber behelfsmäßig auch. Wenn man die XRC-Datei dann in seiner Klasse einbindet hat man nebenbei auch schön den Aufbau der GUI von der Logik getrennt.
Für meine private Spielerei um nebenbei ein wenig was zu programmieren reicht das noch aus.
Da schau ich mal rein! Den kannt ich noch nicht

Verfasst: Sonntag 14. September 2008, 15:39
von BlackJack
@Dr.Network: Mir ist das nicht egal und Dir sollte es nicht egal sein. Quelltext generieren ist in aller Regel ein hässlicher Umweg den man bei Sprachen gehen muss, die nicht flexibel genug sind.
Ausserdem fragtest Du nach Verbesserungen. Eine Funktion die Formulare baut finde ich besser, weil direkter, als eine Funktion die Funktionen schreibt, die Formulare bauen. Das ist einfach eine sinnlose Indirektion.
Der saubere, wartbare Weg ist das Kapseln in einer Klasse.
Verfasst: Sonntag 14. September 2008, 16:16
von Dr.Network
BlackJack hat geschrieben:@Dr.Network: Mir ist das nicht egal und Dir sollte es nicht egal sein. Quelltext generieren ist in aller Regel ein hässlicher Umweg den man bei Sprachen gehen muss, die nicht flexibel genug sind.
Ausserdem fragtest Du nach Verbesserungen. Eine Funktion die Formulare baut finde ich besser, weil direkter, als eine Funktion die Funktionen schreibt, die Formulare bauen. Das ist einfach eine sinnlose Indirektion.
Der saubere, wartbare Weg ist das Kapseln in einer Klasse.
Jo, würd meine Hauptaufgabe im Formular bauen bestehen - würd ich das sicher so machen aber da es nur eine Hilfe sein soll und ich die Kosten/Nutzen im Hinterkopf behalte kann ich mir das nicht erlauben. Daher frag ich ja nach was fertigem

Verfasst: Sonntag 14. September 2008, 17:13
von BlackJack
Äh, bei Kosten/Nutzen wäre es ziemlich günstig selber eine solche Funktion/Klasse zu schreiben. Wie soll es da etwas fertiges geben was gerade zufällig genau auf Dein Problem passt!?
Verfasst: Montag 15. September 2008, 12:20
von CM
Ich kann mich BJ in Allem nur anschließen.
Hier habe ich so etwas mal für ein Menübar gezeigt. Da steht sämtliche Info auch im Quelltext, aber das Bauen des Menüs geschieht über eine spezialisierte Funktion. So etwas kannst Du zumindest als Muster nehmen. Und wenn es sich tatsächlich um Formulardaten handeln soll, empfielt es sich vielleicht einen spezialisierten Parser mit einer entsprechenden Funktion (bzw. Methode Deines "Formularwidgets" zusammenzubringen).
Gruß,
Christian
Verfasst: Montag 15. September 2008, 13:01
von Dr.Network
CM hat geschrieben:Ich kann mich BJ in Allem nur anschließen.
Hier habe ich so etwas mal für ein Menübar gezeigt. Da steht sämtliche Info auch im Quelltext, aber das Bauen des Menüs geschieht über eine spezialisierte Funktion. So etwas kannst Du zumindest als Muster nehmen. Und wenn es sich tatsächlich um Formulardaten handeln soll, empfielt es sich vielleicht einen spezialisierten Parser mit einer entsprechenden Funktion (bzw. Methode Deines "Formularwidgets" zusammenzubringen).
Gruß,
Christian
so ähnlich bau ich mein menü auch

trotzdem danke für den Hinweis denn eigentlich könnte so ähnlich dann etwas für Formulare aussehen ja wahrscheinlich werd ich da nicht drum rumkommen

einmal aber dafür nie wieder

ich probier jetzt erstmal den Builder vom Vorredner