Typisches 'Einstellungen'-Fenster

Plattformunabhängige GUIs mit wxWidgets.
Antworten
alan
User
Beiträge: 81
Registriert: Dienstag 10. April 2007, 11:30

Donnerstag 30. August 2007, 17:52

Hallo

Ich will einen typischen "Einstellungen"-Dialog bauen. Ich habe mich in der Doku etwas umgesehen, und es gibt im wx.lib.pydocview-Modul eine Klasse OptionsDialog, die wohl dafür vorgesehen ist:
http://www.wxpython.org/docs/api/wx.lib ... class.html

Ich bin mir nicht sicher, aber es scheint Teil des document/view frameworks zu sein (http://www.wxwidgets.org/manuals/stable ... rview.html). Damit habe ich allerdings überhaupt keine Erfahrung und auch in wxPython In Action scheint es nichts darüber zu geben. Mein Eindruck ist, dass das eher für komplexere GUIs gedacht ist. (Zumindest kommt es mir ziemlich kompliziert vor.)

Weiß da jemand mehr dazu?
alan
User
Beiträge: 81
Registriert: Dienstag 10. April 2007, 11:30

Dienstag 4. September 2007, 18:21

Nur der Vollständigkeit halber, vielleicht interessiert es ja jemanden. So ähnlich hab ich es jetzt gemacht:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import wx

class MyNotebook(wx.Notebook):
    def __init__(self, parent):
        wx.Notebook.__init__(self, parent, -1)

        panel1 = wx.Panel(self, -1)
        label = wx.StaticText(panel1, -1, "Ich bin ein Panel!")

        panel2 = wx.Panel(self, -1)
        label = wx.StaticText(panel2, -1, "Und ich auch")

        self.AddPage(panel1, "Reiter 1")
        self.AddPage(panel2, "Reiter 2")


class MyFrame(wx.Frame):
    def __init__(self, parent=None):
        wx.Frame.__init__(self, parent, -1)

        menubar = wx.MenuBar()
        bearbeiten = wx.Menu()
        einstellungen = bearbeiten.Append(-1, '&Einstellungen')
        menubar.Append(bearbeiten, '&Bearbeiten')

        self.Bind(wx.EVT_MENU, self.OnEinstellungen, einstellungen)

        self.SetMenuBar(menubar)

    def OnEinstellungen(self, event):
        einstellungenDlg = wx.Dialog(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)

        nb = MyNotebook(einstellungenDlg)
        buttonSizer = einstellungenDlg.CreateButtonSizer(wx.OK | wx.CANCEL)
        sizer.Add(nb, 0, wx.ALL | wx.EXPAND, 5)
        sizer.Add(buttonSizer, 0, wx.ALL | wx.ALIGN_RIGHT, 5)

        einstellungenDlg.SetSizerAndFit(sizer)
        einstellungenDlg.ShowModal()


class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame()
        self.frame.Show(True)
        return True


if __name__ == '__main__':
    app = MyApp()
    app.MainLoop()
Kritik erwünscht :D
Antworten