wx.GridSizer Position

Plattformunabhängige GUIs mit wxWidgets.
Antworten
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

Hallo!
Ich arbeite gerade an einem Programm, mit einem GridSizer, habe jedochh ein Problem (siehe Bild).

Bild

Leider stehen die "Überschriften" ganz oben im Fenster, statt über den Eingabefeldern :|

Hier der Code:

Code: Alles auswählen

class MainFrame(wx.Frame):
    
    def build(self, id, ein, aus, ok, bestand, tag, text, beleg, ust, gegenkonto):
        self.list["checkbox_1___" + str(id)] = wx.CheckBox(self.panel_1, -1, str(id))
        self.list["insert_ein___" + str(id)] = wx.TextCtrl(self.panel_1, -1, "")
        self.list["insert_aus___" + str(id)] = wx.TextCtrl(self.panel_1, -1, "")
        self.list["ckeckbox_2___" + str(id)] = wx.CheckBox(self.panel_1, -1, "")
        self.list["label_wert_bestand___" + str(id)] = wx.StaticText(self.panel_1, -1, u"12345,67€")
        self.list["spin_ctrl_1___" + str(id)] = wx.SpinCtrl(self.panel_1, -1, "0", min=1, max=31)
        self.list["insert_text___" + str(id)] = wx.TextCtrl(self.panel_1, -1, "")
        self.list["insert_ust_satz___" + str(id)] = wx.TextCtrl(self.panel_1, -1, "")
        self.list["insert_gegenkonto___" + str(id)] = wx.TextCtrl(self.panel_1, -1, "")
        self.list["insert_beleg___" + str(id)] = wx.TextCtrl(self.panel_1, -1, "")
        
        self.Bind(wx.EVT_CHECKBOX, self.save, self.list["checkbox_1___" + str(id)])
        self.Bind(wx.EVT_TEXT_ENTER, self.save, self.list["insert_ein___" + str(id)])
        self.Bind(wx.EVT_TEXT_ENTER, self.save, self.list["insert_aus___" + str(id)])
        self.Bind(wx.EVT_CHECKBOX, self.save, self.list["ckeckbox_2___" + str(id)])
        self.Bind(wx.EVT_SPINCTRL, self.save, self.list["label_wert_bestand___" + str(id)])
        self.Bind(wx.EVT_TEXT_ENTER, self.save, self.list["spin_ctrl_1___" + str(id)])
        self.Bind(wx.EVT_TEXT_ENTER, self.save, self.list["insert_text___" + str(id)])
        self.Bind(wx.EVT_TEXT_ENTER, self.save, self.list["insert_gegenkonto___" + str(id)])
        self.Bind(wx.EVT_TEXT_ENTER, self.save, self.list["insert_beleg___" + str(id)])
        
        self.list["checkbox_1___" + str(id)] .SetFont(wx.Font(15, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans Serif"))
        self.list["insert_ein___" + str(id)].SetMinSize((65, 22))
        self.list["insert_ein___" + str(id)].SetForegroundColour(wx.Colour(35, 142, 35))
        self.list["insert_ein___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["insert_aus___" + str(id)].SetMinSize((65, 22))
        self.list["insert_aus___" + str(id)].SetForegroundColour(wx.Colour(237, 0, 0))
        self.list["insert_aus___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["ckeckbox_2___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["ckeckbox_2___" + str(id)].SetValue(1)
        self.list["label_wert_bestand___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["spin_ctrl_1___" + str(id)].SetMinSize((55, 22))
        self.list["spin_ctrl_1___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["insert_text___" + str(id)].SetMinSize((65, 22))
        self.list["insert_text___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["insert_beleg___" + str(id)].SetMinSize((65, 22))
        self.list["insert_beleg___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["insert_ust_satz___" + str(id)].SetMinSize((65, 22))
        self.list["insert_ust_satz___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        self.list["insert_gegenkonto___" + str(id)].SetMinSize((65, 22))
        self.list["insert_gegenkonto___" + str(id)].SetFont(wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        
        self.grid_sizer_3.Add(self.list["checkbox_1___" + str(id)], 0, 0, 0)
        self.grid_sizer_3.Add(self.list["insert_ein___" + str(id)], 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["insert_aus___" + str(id)], 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["ckeckbox_2___" + str(id)], 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["label_wert_bestand___" + str(id)], 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["spin_ctrl_1___" + str(id)], 0, 0, 0)
        self.grid_sizer_3.Add(self.list["insert_text___" + str(id)], 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["insert_beleg___" + str(id)], 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["insert_ust_satz___" + str(id)], 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 0)
        self.grid_sizer_3.Add(self.list["insert_gegenkonto___" + str(id)], 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 0)
    
    def __init__(self, *args, **kwds):
        self.list = {}
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.wahl_mandant = wx.Choice(self, -1, choices=["kunde1", "kunde2"])
        self.wahl_datum = wx.Choice(self, -1, choices=[u"bitte wählen..."])
        self.button_add = wx.BitmapButton(self, -1, wx.Bitmap("/srv/www/htdocs/umrechner/email.gif", wx.BITMAP_TYPE_ANY), style=wx.BU_AUTODRAW)
        self.button_del = wx.BitmapButton(self, -1, wx.Bitmap("/srv/www/htdocs/umrechner/email.gif", wx.BITMAP_TYPE_ANY), style=wx.BU_AUTODRAW)
        self.txt_start = wx.StaticText(self, -1, "STARTBETRAG:")
        self.insert_start = wx.TextCtrl(self, -1, "100")
        self.txt_euro = wx.StaticText(self, -1, u"€", style=wx.ALIGN_RIGHT)
        self.frame_1_statusbar = self.CreateStatusBar(1, 0)
        self.panel_1 = wx.ScrolledWindow(self, -1, style=wx.TAB_TRAVERSAL)
        self.panel_1.SetScrollRate(10, 10)
        self.__set_properties()
        self.__do_layout()

        #self.Bind...

    def __set_properties(self):
        self.SetTitle("Cashbook")
        self.wahl_mandant.SetMinSize((150, 23))
        self.wahl_mandant.SetSelection(0)
        self.wahl_datum.SetMinSize((150, 23))
        self.wahl_datum.SetSelection(0)
        self.button_add.SetMinSize((60, 60))
        self.button_del.SetMinSize((60, 60))
        self.txt_start.SetMinSize((199, 26))
        self.txt_start.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans Serif"))
        self.insert_start.SetMinSize((150, 26))
        self.insert_start.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans Serif"))
        self.txt_euro.SetMinSize((26, 26))
        self.txt_euro.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans Serif"))
        self.frame_1_statusbar.SetStatusWidths([-1])
        # statusbar fields
        frame_1_statusbar_fields = ["Willkommen bei Cashbook!"]
        for i in range(len(frame_1_statusbar_fields)):
            self.frame_1_statusbar.SetStatusText(frame_1_statusbar_fields[i], i)
        # end wxGlade

    def __do_layout(self):
        
        txt_id = wx.StaticText(self, -1, "Id")
        txt_ein = wx.StaticText(self, -1, u"Ein (€)")
        txt_aus = wx.StaticText(self, -1, u"Aus (€)")
        txt_ok = wx.StaticText(self, -1, "OK")
        txt_bestand = wx.StaticText(self, -1, "Bestand")
        txt_datum = wx.StaticText(self, -1, "Tag")
        txt_text = wx.StaticText(self, -1, "Text")
        txt_beleg = wx.StaticText(self, -1, "Beleg")
        txt_ust_satz = wx.StaticText(self, -1, "Ust. Satz (%)")
        txt_gegenkonto = wx.StaticText(self, -1, "Gegenkonto")
        txt_id.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_ein.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_aus.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_ok.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_bestand.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_datum.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_text.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_beleg.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_ust_satz.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        txt_gegenkonto.SetFont(wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Sans"))
        
        print("make:   self.__do_layout")
        sizer1 = wx.FlexGridSizer(8, 1, 5, 0); self.grid_sizer_3 = wx.FlexGridSizer(11, 10, 10, 5); self.grid_sizer_2 = wx.FlexGridSizer(1, 10, 10, 5); sizer3 = wx.FlexGridSizer(1, 3, 0, 0); sizer2 = wx.FlexGridSizer(1, 2, 0, 5)
        sizer1.Add(self.wahl_mandant, 0, wx.ALIGN_RIGHT, 0)
        sizer1.Add(self.wahl_datum, 0, wx.ALIGN_RIGHT, 0)
        sizer1.Add((20, 20), 0, 0, 0)
        sizer2.Add(self.button_add, 0, 0, 0)
        sizer2.Add(self.button_del, 0, 0, 0)
        sizer1.Add(sizer2, 1, 0, 0)
        sizer1.Add((20, 20), 0, 0, 0)
        sizer3.Add(self.txt_start, 0, 0, 0)
        sizer3.Add(self.insert_start, 0, 0, 0)
        sizer3.Add(self.txt_euro, 0, 0, 0)
        sizer1.Add(sizer3, 1, wx.EXPAND, 0)
        sizer1.Add((20, 20), 0, 0, 0)
        self.grid_sizer_3.Add(txt_id, 0, 0, 0)
        self.grid_sizer_3.Add(txt_ein, 0, 0, 0)
        self.grid_sizer_3.Add(txt_aus, 0, 0, 0)
        self.grid_sizer_3.Add(txt_ok, 0, 0, 0)
        self.grid_sizer_3.Add(txt_bestand, 0, 0, 0)
        self.grid_sizer_3.Add(txt_datum, 0, 0, 0)
        self.grid_sizer_3.Add(txt_text, 0, 0, 0)
        self.grid_sizer_3.Add(txt_beleg, 0, 0, 0)
        self.grid_sizer_3.Add(txt_ust_satz, 0, 0, 0)
        self.grid_sizer_3.Add(txt_gegenkonto, 0, 0, 0)
        
       # sizer1.Add(self.grid_sizer_2, 1, wx.EXPAND, 0)
        
        id=[]
        for i in range(99):
            id.append(str(i+1))
        ein="123"
        aus="123"
        ok = True
        bestand = "0"
        tag = "22"
        text="blabla"
        beleg = "no"
        ust = "no"
        gegenkonto="no"
        for i in range(10):
            self.build(id[i], ein, aus, ok, bestand, tag, text, beleg, ust, gegenkonto)
            print("made " + str(i+1) + "/10")
        self.grid_sizer_3.AddGrowableCol(6)
        self.panel_1.SetSizer(self.grid_sizer_3)
        sizer1.Add(self.panel_1, 1, wx.EXPAND, 0)
        
        self.SetSizer(sizer1)
        sizer1.Fit(self)
        sizer1.AddGrowableRow(7)#8
        sizer1.AddGrowableCol(0)
       ...
Ich habe wirklich keine Ahnung, was das sein könnte :K

akhof
BlackJack

@akhof: Vielleicht ein Grund sich Tabellen-Widgets nicht selbst zu basteln, sondern die zu nehmen, die schon vorhanden sind. ;-)

Ansonsten wirst Du wahrscheinlich irgendwo bei den Sizern etwas durcheinander gebracht haben.
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

BlackJack hat geschrieben:@akhof: Vielleicht ein Grund sich Tabellen-Widgets nicht selbst zu basteln, sondern die zu nehmen, die schon vorhanden sind. ;-)

Ansonsten wirst Du wahrscheinlich irgendwo bei den Sizern etwas durcheinander gebracht haben.
hab ich mir auch schon gedacht, habe aber seit tagen gesucht und nichts gefunden. - die frage war ja, obe einer von Euch eine idee hat, wo dieser fehler liegen könnte...

akhof
Antworten