Seite 1 von 1

Typisches 'Einstellungen'-Fenster

Verfasst: Donnerstag 30. August 2007, 17:52
von alan
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?

Verfasst: Dienstag 4. September 2007, 18:21
von alan
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