Suche ein Script das mir einfache Formulare baut

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

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 :roll: 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)"
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?
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

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

Langsam macht mich das wütend da man dabei nur Zeit verliert schreckliche Fleißarbeit :wink:
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

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.
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

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 :)
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.
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

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 :)
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!?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

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 :roll: einmal aber dafür nie wieder :) ich probier jetzt erstmal den Builder vom Vorredner
Antworten