Wie aus dem Thread http://python.sandtner.org/viewtopic.php?t=2237 hervorhgegangen ist, scheit für mich wxGlade noch die beste Alternative zu sein, eine GUI zu basteln...
Leider hab ich damit aber noch ein paar Schwirigkeiten... Insbesondere mit dem editieren einer bestehenden GUI...
Damit man nicht, bei einem verwurschteltem Tree, wieder von vorn anfangen muß, hab ich mit überlegt, einfach ein neues Frame zu erstellen und aus dem alten Frame die sachen per Copy&Paste an die richtigen Stellen einzufügen...
Leider wird dabei bei den kopierten Elementen immer ein "_copy" angehängt ... Doch man kann es einfach in der Projektdatei *.wxg per suchen&ersetzten in einem Editor wieder löschen...
Was ich doof finde, man kann nicht gut sehen, wie die Sizer aufgetreilt sind, kann man irgendwie Trennlinien sichtbar machen?
Und vor allem: Ich verstehe die Sizer nicht so ganz... Kann ich mir das vorstellen wie Tabellen beim alten HTML-Gefrickel??? Nur dann verstehe ich nicht, wie ich die Größen der Zellen festlegen kann...
Wie kann ich sagen, diese Zelle soll Minimal größe erhalten, also gerade so groß, das die Elemente reinpassen und die andere Zelle soll den Rest Raum ausfüllen...
wxGlade - Handhabung...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Was die Tabellen angeht, ich denke es gibt meim erstellen der Sizer eine Möglichkeit sowas wie wx.EXPAND anzugeben (du brauchsts aber andersrum, nur weiß ich den Variablennamen gerade nicht)
Hast du die UsingSizers aus dem Wiki angeschaut? Aja, du solltest dich unbedingt in der wxPython-users Mailingliste anmelden, dort gibt es den besten Support, und viel Traffic.
Hast du die UsingSizers aus dem Wiki angeschaut? Aja, du solltest dich unbedingt in der wxPython-users Mailingliste anmelden, dort gibt es den besten Support, und viel Traffic.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
wx.EXPAND maximiert aber nur in der Breite...
Also ich hab einen Sizer mit drei vertikale Spalten:
Text oben und Buttons unten sollten nur so viel Platz einnehmen, das es eben so passt...
Also ich hab einen Sizer mit drei vertikale Spalten:
- oben - ein einzeiliger Text
mitte - ein Text-Feld
unten - drei Buttons (in einem Sizer)

-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich habe sowas:
Die wx.EXPANDs gibt man durch das ua durch die 1 an, beim erstellen von Sizern, beim Hinzufügen von Wigdets, überall.
Code: Alles auswählen
self.parabar.Add(self.wordchoice, 1, wx.EXPAND)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Also ich hab bei wxGlade bei dem TextFeld "wx.EXPAND" angegeben... aber raus kommt folgende Zeilen:
[...]
self.info_textfeld = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_LINEWRAP)
[...]
self.info_textfeld.SetFont(wx.Font(8, wx.MODERN, wx.NORMAL, wx.NORMAL, 0, ""))
[...]
sizer_2.Add(self.info_textfeld, 0, wx.ALL|wx.EXPAND, 3)
[...]
In der Editor-Ansicht von wxGlade ist das Textfeld auch richtig groß... Wenn ich allerdings auf Preview gehe, ist es nur ein paar Zeilen hoch...
[...]
self.info_textfeld = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_LINEWRAP)
[...]
self.info_textfeld.SetFont(wx.Font(8, wx.MODERN, wx.NORMAL, wx.NORMAL, 0, ""))
[...]
sizer_2.Add(self.info_textfeld, 0, wx.ALL|wx.EXPAND, 3)
[...]
In der Editor-Ansicht von wxGlade ist das Textfeld auch richtig groß... Wenn ich allerdings auf Preview gehe, ist es nur ein paar Zeilen hoch...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich habe wxGlade nicht genutzt, teils weil ich sonst den Code den er generiert nicht verstehen würde und das tät mir gar nicht gefallen, deswegen habe ich ja XRCed bevorzugt.
Hast du gespeichert? EXPAND vergrößert es soweit wie der Sizer es zulässt.
Hast du gespeichert? EXPAND vergrößert es soweit wie der Sizer es zulässt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Also ich bekomme es immer noch nicht hin.... hier hab ich es mal aus dem *.xrc rausgeschnitten:
Code: Alles auswählen
<object class="wxFrame" name="CDselect" subclass="CDselectFrame">
<style>wxDEFAULT_FRAME_STYLE</style>
<size>396, 422d</size>
<title>CD Auswahl</title>
<object class="wxBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND</flag>
<object class="wxListCtrl" name="CDliste">
<style>wxLC_REPORT|wxSUNKEN_BORDER</style>
<size>390, 50</size>
</object>
</object>
<object class="sizeritem">
<flag>wxALL</flag>
<border>3</border>
<object class="wxStaticText" name="CDname">
<label>label_1</label>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND</flag>
<object class="wxListCtrl" name="TitelListe">
<style>wxLC_REPORT|wxSUNKEN_BORDER</style>
<size>390, 300</size>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND</flag>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<flag>wxALL</flag>
<border>3</border>
<object class="wxButton" name="button_useCD">
<label>CD auswählen</label>
</object>
</object>
<object class="sizeritem">
<flag>wxALL</flag>
<border>3</border>
<object class="wxButton" name="button_abbruch">
<label>abbruch</label>
</object>
</object>
</object>
</object>
</object>
</object>
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
So, ich hab mal versucht über XML-Datei die GUI anzeigen zu lassen:
Ich sehe auch die GUI. Komischerweise ist diese aber ganz anders Skaliert, wenn ich es mit der *.py-Datei vergleiche, die wxGlade ausgespuckt hat 
Außerdem bekomme ich eine Fehler-Meldung, dach dem das Frame zu sehen ist:
Die zweite Zeile kann ich vielleicht noch verstehen, da ich überhaupt keine Event-Handler definiert hab... Aber was bedeutet die erste Zeile???
Mir scheint es wesentlich mehr Arbeit zu sein, wenn man übner XML geht, was?
Code: Alles auswählen
from wxPython.wx import *
from wxPython.xrc import *
class MyApp( wx.App ):
def OnInit( self ):
self.res = wxXmlResource( "Layout.xrc" )
self.mainFrame = self.res.LoadFrame( None, "Hauptmenue" )
self.mainFrame.Show(1)
return 1
if __name__ == '__main__':
app = MyApp( redirect=False )
app.MainLoop()

Außerdem bekomme ich eine Fehler-Meldung, dach dem das Frame zu sehen ist:
Code: Alles auswählen
14:50:37: Subclass 'mainFrame' not found for resource 'Hauptmenue', not subclassing!
14:50:37: No handler found for XML node 'object', class 'wxMenuItem'!
Mir scheint es wesentlich mehr Arbeit zu sein, wenn man übner XML geht, was?