Seiten

Donnerstag, 23. Juni 2011

Sommerferien & wxPy

Ich hatte 2 Wochen Sommerferien und war mit meiner Familie auf Lanzarote. Es war toll, jetzt bin ich so unnatürlich braun ..

Der Mini war mit auf der Reise und so konnte ich zwischendurch mich ein wenig mit wxPython beschäftigen. Inzwischen habe ich die ersten 6 Kapitel durch und bin am Siebten dran.

Screenshots meiner Ergebnisse:

Erste Schritte




Menüs




Layouttechniken Teil 1 & 2

 



Events

  


Dialoge




Und hier bin ich gerade dran: Widgets

 

Ich habe die Beispiele des Tutorials übernommen und zusammengefasst. Dabei versuchte ich die Syntax grösstenteils der wxPython Style-Guide anzupassen. Man merkt die verschiedenen Alter der Tutorial-Skripte anhand des Programmierstils.

Ich benutze Ubuntu 11.04 mit Unity, dadurch sind die Menubars nicht sichtbar in den Programmfenstern. (Sie werden im Panel angezeigt.) Bei den Events erzeugte mir EVT_SIZE immer einen GTK Error, wenn ich diesen Event in meinem Skript behandeln wollte. Im Skript des Tutorials funktioniert es auch unter Ubuntu 11.04.

Und zuletzt noch alle Python-Skripte für die Interessierten:

Erste Schritte
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class Example(wx.Frame):
    def __init__(self, parent, id, title):
        super(Example, self).__init__(parent, id, title, size=(250, 200))
        self.Centre()
        # self.Move((800, 250))
        self.Show()

if __name__== '__main__':
    app = wx.App()
    Example(None, wx.ID_ANY, 'Erasand.01.Frame')
    app.MainLoop()



Menus
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class Menus(wx.Frame):

    def __init__(self, parent, id, title):
        super(Menus, self).__init__(parent, id, title, size=(400, 300))

        menubar = wx.MenuBar() # wx.MB_DOCKABLE as option

        # FILE MENU
        menu_file = wx.Menu()
       
        pngfolder= 'icons_16/'
        id_menu_new= wx.ID_NEW
        id_menu_open= wx.ID_OPEN
        id_menu_save= wx.ID_SAVE
        id_menu_exit = wx.ID_EXIT
       
        menu_new= wx.MenuItem(menu_file, id_menu_new, '&New\tCtrl+N',
            'A new document')
        menu_new.SetBitmap(wx.Bitmap(pngfolder+ 'document-new.png'))
        menu_open= wx.MenuItem(menu_file, id_menu_open, '&Open\tCtrl+O',
            'Open a document')
        menu_open.SetBitmap(wx.Bitmap(pngfolder+ 'document-open.png'))
        menu_save= wx.MenuItem(menu_file, id_menu_save, '&Save\tCtrl+S',
            'Save the current file')
        menu_save.SetBitmap(wx.Bitmap(pngfolder+ 'document-save.png'))
        menu_exit= wx.MenuItem(menu_file, id_menu_exit, '&Exit\tCtrl+W',
            'Exit the program')
        menu_exit.SetBitmap(wx.Bitmap(pngfolder+ 'process-stop.png'))

        menu_file.AppendItem(menu_new)
        menu_file.AppendItem(menu_open)
        menu_file.AppendItem(menu_save)
        menu_file.AppendSeparator()
        menu_file.AppendItem(menu_exit)
       
        self.Bind(wx.EVT_MENU, self.on_new, id= id_menu_new)
        self.Bind(wx.EVT_MENU, self.on_open, id= id_menu_open)
        self.Bind(wx.EVT_MENU, self.on_save, id= id_menu_save)
        self.Bind(wx.EVT_MENU, self.on_exit, id= id_menu_exit)
       
        menubar.Append(menu_file, '&File')

        # EDIT MENU / SUBMENUS
        menu_edit= wx.Menu()
        menu_import= wx.Menu()
       
        id_menu_copy= wx.ID_COPY
        id_menu_cut= wx.ID_CUT
        id_menu_paste= wx.ID_PASTE
        id_menu_impnews = wx.NewId()
        id_menu_impmail = wx.NewId()
        id_menu_impbook = wx.NewId()       
       
        menu_edit.Append(id_menu_copy, '&Copy\tCtrl+C',
            'Copy data to Clipboard')
        menu_edit.Append(id_menu_cut, 'Cu&t\tCtrl+X',
            'Cut data to Clipboard')
        menu_edit.Append(id_menu_paste, '&Paste\tCtrl+V',
            'Paste Data from Clipboard')
        menu_import.Append(id_menu_impnews, 'Import &News\tCtrl+I',
            'Import data from news')
        menu_import.Append(id_menu_impmail, 'Import &Mail\tCtrl+J',
            'Import data from mails')
        menu_import.Append(id_menu_impbook, 'Import &Bookmarks\tCtrl+K',
            'Import Data from bookmarks')
        menu_edit.AppendMenu(wx.ID_ANY, 'I&mport', menu_import)
       
        self.Bind(wx.EVT_MENU, self.on_copy, id= id_menu_copy)
        self.Bind(wx.EVT_MENU, self.on_cut, id= id_menu_cut)
        self.Bind(wx.EVT_MENU, self.on_paste, id= id_menu_paste)
        self.Bind(wx.EVT_MENU, self.on_impnews, id= id_menu_impnews)
        self.Bind(wx.EVT_MENU, self.on_impmail, id= id_menu_impmail)
        self.Bind(wx.EVT_MENU, self.on_impbook, id= id_menu_impbook)
       
        menubar.Append(menu_edit, '&Edit')

        # VIEW MENU / CHECKITEMS
        view= wx.Menu()
       
        id_menu_statonoff= wx.NewId()
        id_menu_toolonoff= wx.NewId()
       
        self.__menu_status= view.Append(id_menu_statonoff, 'Show statusbar',
            'Show statusbar', wx.ITEM_CHECK)
        self.__menu_tool= view.Append(id_menu_toolonoff, 'Show toolbar',
            'Show toolbar', wx.ITEM_CHECK)
       
        view.Check(id_menu_statonoff, True)
        view.Check(id_menu_toolonoff, True)
       
        self.Bind(wx.EVT_MENU, self.on_statonoff, id= id_menu_statonoff)
        self.Bind(wx.EVT_MENU, self.on_toolonoff, id= id_menu_toolonoff)

        menubar.Append(view, '&View')

        # BOX FOR TOOLBARS
        vbox = wx.BoxSizer(wx.VERTICAL)
        pngfolder= 'icons_22/'

        # TOOLBAR HORIZONTAL
        id_tb1= wx.ID_ANY
        id_tool_new= wx.NewId()
        id_tool_open= wx.NewId()
        id_tool_save= wx.NewId()
        id_tool_exit = wx.NewId()

        self.__tb1 = wx.ToolBar(self, id_tb1, style= wx.TB_HORIZONTAL)
        self.__tb1.AddLabelTool(id_tool_new, '',
            wx.Bitmap(pngfolder+ 'document-new.png'))
        self.__tb1.AddLabelTool(id_tool_open, '',
            wx.Bitmap(pngfolder+ 'document-open.png'))
        self.__tb1.AddLabelTool(id_tool_save, '',
            wx.Bitmap(pngfolder+ 'document-save.png'))
        self.__tb1.AddLabelTool(id_tool_exit, '',
            wx.Bitmap(pngfolder+ 'process-stop.png'))
        self.__tb1.Realize()
       
        self.Bind(wx.EVT_TOOL, self.on_new, id= id_tool_new)
        self.Bind(wx.EVT_TOOL, self.on_open, id= id_tool_open)
        self.Bind(wx.EVT_TOOL, self.on_save, id= id_tool_save)
        self.Bind(wx.EVT_TOOL, self.on_exit, id= id_tool_exit)

        # TOOLBAR VERTICAL
        id_tb2= wx.ID_ANY
        id_tool_copy= wx.NewId()
        id_tool_cut= wx.NewId()
        id_tool_paste= wx.NewId()
        id_tool_impnews = wx.NewId()
        id_tool_impmail = wx.NewId()
        id_tool_impbook = wx.NewId()       

        tb2 = wx.ToolBar(self, id_tb2, style= wx.TB_VERTICAL)
        tb2.AddLabelTool(id_tool_copy, '',
            wx.Bitmap(pngfolder+ 'edit-copy.png'))
        tb2.AddLabelTool(id_tool_cut, '',
            wx.Bitmap(pngfolder+ 'edit-cut.png'))
        tb2.AddLabelTool(id_tool_paste, '',
            wx.Bitmap(pngfolder+ 'edit-paste.png'))
        tb2.AddLabelTool(id_tool_impnews, '',
            wx.Bitmap(pngfolder+ 'internet-news-reader.png'))
        tb2.AddLabelTool(id_tool_impmail, '',
            wx.Bitmap(pngfolder+ 'internet-mail.png'))
        tb2.AddLabelTool(id_tool_impbook, '',
            wx.Bitmap(pngfolder+ 'bookmark-new.png'))
        tb2.Realize()
       
        self.Bind(wx.EVT_TOOL, self.on_copy, id= id_tool_copy)
        self.Bind(wx.EVT_TOOL, self.on_cut, id= id_tool_cut)
        self.Bind(wx.EVT_TOOL, self.on_paste, id= id_tool_paste)
        self.Bind(wx.EVT_TOOL, self.on_impnews, id= id_tool_impnews)
        self.Bind(wx.EVT_TOOL, self.on_impmail, id= id_tool_impmail)
        self.Bind(wx.EVT_TOOL, self.on_impbook, id= id_tool_impbook)
   
        # SET WINDOW
        self.Bind(wx.EVT_RIGHT_DOWN, self.on_rightdown)
       
        vbox.Add(self.__tb1, 0, wx.EXPAND)
        vbox.Add(tb2, 0, wx.EXPAND)       
       
        self.SetMenuBar(menubar)
        self.SetSizer(vbox)
        self.Centre()
        self.Show()

    def on_new(self, event):
        print('new')

    def on_open(self, ebent):
        print('open')

    def on_save(self, event):
        print('save')

    def on_exit(self, event):
        self.Close()

    def on_copy(self, event):
        print('copy')

    def on_cut(self, event):
        print('cut')

    def on_paste(self, event):
        print('paste')

    def on_impnews(self, event):
        print('import news')

    def on_impmail(self, event):
        print('import mails')

    def on_impbook(self, event):
        print('import bookmarks')

    def on_statonoff(self, event):
        if self.__menu_status.IsChecked():
            print('Statusbar on')
        else:
            print('Statusbar off')

    def on_toolonoff(self, event):
        if self.__menu_tool.IsChecked():
            print('Toolbar on')
            self.__tb1.Show()
        else:
            print('Toolbar off')
            self.__tb1.Hide()

    def on_rightdown(self, event):
        self.PopupMenu(Contextmenu(self), event.GetPosition())

class Contextmenu(wx.Menu):
    def __init__(self, parent):
        wx.Menu.__init__(self)
        self.__parent= parent
       
        id_menu_iconize= wx.NewId()
        id_menu_close= wx.NewId()
       
        menu_icon= wx.MenuItem(self, id_menu_iconize, '&Minimize')
        menu_close= wx.MenuItem(self, id_menu_close, '&Close')
       
        self.AppendItem(menu_icon)
        self.AppendItem(menu_close)
       
        self.Bind(wx.EVT_MENU, self.on_iconize, id= id_menu_iconize)
        self.Bind(wx.EVT_MENU, self.on_close, id= id_menu_close)
       
    def on_iconize(self, event):
        self.__parent.Iconize()
   
    def on_close(self, event):
        self.__parent.Close()

if __name__ == '__main__':
    app = wx.App()
    Menus(None, wx.ID_ANY, 'Erasand.02.Menus')
    app.MainLoop()



Layouttechniken Teil 1
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class LayoutA(wx.Frame):

    def __init__(self, parent, id, title):
        super(LayoutA, self).__init__(parent, id, title, size= (400, 300))

        # masterlayout: master_
        master_pan= wx.Panel(self)
        master_hbox= wx.BoxSizer(wx.HORIZONTAL)
       
        master_font= wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
        master_font.SetPointSize(16)

        # go to class: gtc_
        gtc_font= wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
        gtc_font.SetPointSize(9)
       
        gtc_vbox= wx.BoxSizer(wx.VERTICAL)

        master_title1= wx.StaticText(master_pan, label= 'Go To Class')
        master_title1.SetFont(master_font)
        gtc_vbox.Add(master_title1, 0, wx.LEFT|wx.TOP, 10)
       
        gtc_hbox1= wx.BoxSizer(wx.HORIZONTAL)
        gtc_txt1= wx.StaticText(master_pan, label= 'Class Name')
        gtc_txt1.SetFont(gtc_font)         
        gtc_hbox1.Add(gtc_txt1, 0, wx.RIGHT, 8)
        gtc_input1= wx.TextCtrl(master_pan)
        gtc_hbox1.Add(gtc_input1, 1)
        gtc_vbox.Add(gtc_hbox1, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 10)
       
        gtc_vbox.Add((wx.ID_ANY, 10))
       
        gtc_hbox2= wx.BoxSizer(wx.HORIZONTAL)
        gtc_txt2= wx.StaticText(master_pan, label= 'Matching Classes')
        gtc_txt2.SetFont(gtc_font)
        gtc_hbox2.Add(gtc_txt2)
        gtc_vbox.Add(gtc_hbox2, 0, wx.LEFT|wx.TOP, 10)
       
        gtc_vbox.Add((wx.ID_ANY, 10))
       
        gtc_hbox3= wx.BoxSizer(wx.HORIZONTAL)
        gtc_input2= wx.TextCtrl(master_pan, style= wx.TE_MULTILINE)
        gtc_hbox3.Add(gtc_input2, 1, wx.EXPAND)
        gtc_vbox.Add(gtc_hbox3, 1, wx.LEFT|wx.RIGHT|wx.EXPAND, 10)

        gtc_vbox.Add((wx.ID_ANY, 25))

        gtc_hbox4= wx.BoxSizer(wx.HORIZONTAL)
        gtc_check1= wx.CheckBox(master_pan, label= 'Case Sensitive')
        gtc_check1.SetFont(gtc_font)
        gtc_hbox4.Add(gtc_check1)
        gtc_check2= wx.CheckBox(master_pan, label= 'Nested Classes')
        gtc_check2.SetFont(gtc_font)
        gtc_hbox4.Add(gtc_check2, 0, wx.LEFT, 10)
        gtc_check3= wx.CheckBox(master_pan, label= 'Non-Project classes')
        gtc_check3.SetFont(gtc_font)
        gtc_hbox4.Add(gtc_check3, 0, wx.LEFT, 10)
        gtc_vbox.Add(gtc_hbox4, 0, wx.LEFT, 10)
       
        gtc_vbox.Add((wx.ID_ANY, 25))
       
        gtc_hbox5= wx.BoxSizer(wx.HORIZONTAL)
        gtc_butt1= wx.Button(master_pan, label= 'Ok', size= (70, 30))
        gtc_hbox5.Add(gtc_butt1)
        gtc_butt2= wx.Button(master_pan, label= 'Close', size= (70, 30))
        gtc_hbox5.Add(gtc_butt2, 0, wx.LEFT|wx.BOTTOM, 5)
        gtc_vbox.Add(gtc_hbox5, 0, wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM,
            10)
       
        # calculator: clc_
        menubar= wx.MenuBar()
        menu_file= wx.Menu()
        menu_file.Append(wx.ID_ANY, '&Exit\tCtrl+W')
        menubar.Append(menu_file, '&File')
        self.SetMenuBar(menubar)
       
        clc_vbox= wx.BoxSizer(wx.VERTICAL)

        master_title2= wx.StaticText(master_pan, label= 'Calculator')
        master_title2.SetFont(master_font)
        clc_vbox.Add(master_title2, 0, wx.LEFT|wx.TOP, 10)
       
        self.__clc_display= wx.TextCtrl(master_pan, style= wx.TE_RIGHT)
        clc_vbox.Add(self.__clc_display, 0, wx.EXPAND|wx.TOP|wx.BOTTOM,
            4)

        clc_gs= wx.GridSizer(4, 4, 5, 5)
        clc_gs.AddMany( [(wx.Button(master_pan, label= 'Cls'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= 'Bck'), 0, wx.EXPAND),
            (wx.StaticText(master_pan), 0, wx.EXPAND),
            (wx.Button(master_pan, label= 'Close'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '7'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '8'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '9'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '/'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '4'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '5'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '6'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '*'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '1'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '2'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '3'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '-'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '0'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '.'), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '= '), 0, wx.EXPAND),
            (wx.Button(master_pan, label= '+'), 0, wx.EXPAND)] )
        clc_vbox.Add(clc_gs, 1, wx.EXPAND|wx.BOTTOM, 10)

        # review: rvw_
        rvw_vbox= wx.BoxSizer(wx.VERTICAL)

        master_title3= wx.StaticText(master_pan, label= 'Review')
        master_title3.SetFont(master_font)
        rvw_vbox.Add(master_title3, 0, wx.LEFT|wx.TOP, 10)

        rvw_fgs= wx.FlexGridSizer(3, 2, 9, 25)

        rvw_title= wx.StaticText(master_pan, label= 'Title')
        rvw_author= wx.StaticText(master_pan, label= 'Author')
        rvw_review= wx.StaticText(master_pan, label= 'Review')

        rvw_tc1= wx.TextCtrl(master_pan)
        rvw_tc2= wx.TextCtrl(master_pan)
        rvw_tc3= wx.TextCtrl(master_pan, style= wx.TE_MULTILINE)

        rvw_fgs.AddMany( [(rvw_title),
            (rvw_tc1, 1, wx.EXPAND),
            (rvw_author),
            (rvw_tc2, 1, wx.EXPAND),
            (rvw_review, 1, wx.EXPAND),
            (rvw_tc3, 1, wx.EXPAND)] )

        rvw_fgs.AddGrowableRow(2, 1)
        rvw_fgs.AddGrowableCol(1, 1)

        rvw_vbox.Add(rvw_fgs, 1, wx.ALL|wx.EXPAND, 15)
       
        # master layout
        master_hbox.Add(gtc_vbox, 1, wx.EXPAND, 10)
        master_hbox.Add(clc_vbox, 1, wx.EXPAND, 10)
        master_hbox.Add(rvw_vbox, 1, wx.EXPAND, 10)
        master_pan.SetSizer(master_hbox)

        self.Centre()
        self.Show()

if __name__== '__main__':
    app= wx.App()
    LayoutA(None, wx.ID_ANY, 'Erasand.03a.Layout')
    app.MainLoop()



Layouttechniken Teil 2
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class LayoutB(wx.Frame):

    def __init__(self, parent, id, title):
        super(LayoutB, self).__init__(parent, id, title, size= (400, 300))

        # masterlayout: master_
        master_pan= wx.Panel(self)
        master_hbox= wx.BoxSizer(wx.HORIZONTAL)
       
        master_font= wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
        master_font.SetPointSize(16)

        # rename: rnm_
        rnm_vbox= wx.BoxSizer(wx.VERTICAL)

        master_title4= wx.StaticText(master_pan, label= 'Rename')
        master_title4.SetFont(master_font)
        rnm_vbox.Add(master_title4, 0, wx.LEFT|wx.TOP, 10)

        rnm_sizer= wx.GridBagSizer(4, 4)

        rnm_text= wx.StaticText(master_pan, label= 'Rename To')
        rnm_sizer.Add(rnm_text, pos= (0, 0), flag = wx.TOP|wx.LEFT|wx.BOTTOM,
            border= 5)

        rnm_tc= wx.TextCtrl(master_pan)
        rnm_sizer.Add(rnm_tc, pos= (1, 0), span= (1, 5),
            flag= wx.EXPAND|wx.LEFT|wx.RIGHT, border= 5)

        rnm_buttonOk= wx.Button(master_pan, label= 'Ok', size= (90, 28))
        rnm_buttonClose= wx.Button(master_pan, label= 'Close', size= (90, 28))
        rnm_sizer.Add(rnm_buttonOk, pos= (3, 3))
        rnm_sizer.Add(rnm_buttonClose, pos= (3, 4), flag= wx.RIGHT|wx.BOTTOM,
            border= 5)

        rnm_sizer.AddGrowableCol(1)
        rnm_sizer.AddGrowableRow(2)
       
        rnm_vbox.Add(rnm_sizer, 1, wx.EXPAND)
       
        # newclass: nwc_
        nwc_sizer= wx.GridBagSizer(5, 5)

        nwc_text1= wx.StaticText(master_pan, label= 'Java Class')
        nwc_sizer.Add(nwc_text1, pos= (0, 0), flag= wx.TOP|wx.LEFT|wx.BOTTOM,
            border= 15)

        nwc_icon= wx.StaticBitmap(master_pan,
            bitmap= wx.Bitmap('icons_22/software-update-available.png'))
        nwc_sizer.Add(nwc_icon, pos= (0, 4),
            flag= wx.TOP|wx.RIGHT|wx.ALIGN_RIGHT, border= 5)

        nwc_line= wx.StaticLine(master_pan)
        nwc_sizer.Add(nwc_line, pos= (1, 0), span= (1, 5),
            flag= wx.EXPAND|wx.BOTTOM, border= 10)

        nwc_text2= wx.StaticText(master_pan, label= 'Name')
        nwc_sizer.Add(nwc_text2, pos= (2, 0), flag= wx.LEFT, border= 10)

        nwc_tc1= wx.TextCtrl(master_pan)
        nwc_sizer.Add(nwc_tc1, pos= (2, 1), span= (1, 3),
            flag= wx.TOP|wx.EXPAND)

        nwc_text3= wx.StaticText(master_pan, label= 'Package')
        nwc_sizer.Add(nwc_text3, pos= (3, 0), flag= wx.LEFT|wx.TOP, border= 10)

        nwc_tc2= wx.TextCtrl(master_pan)
        nwc_sizer.Add(nwc_tc2, pos= (3, 1), span= (1, 3),
            flag= wx.TOP|wx.EXPAND, border= 5)

        nwc_button1= wx.Button(master_pan, label= 'Browse...')
        nwc_sizer.Add(nwc_button1, pos= (3, 4), flag= wx.TOP|wx.RIGHT,
            border= 5)

        nwc_text4= wx.StaticText(master_pan, label= 'Extends')
        nwc_sizer.Add(nwc_text4, pos= (4, 0), flag= wx.TOP|wx.LEFT, border= 10)

        nwc_combo= wx.ComboBox(master_pan)
        nwc_sizer.Add(nwc_combo, pos= (4, 1), span= (1, 3),
            flag= wx.TOP|wx.EXPAND, border= 5)

        nwc_button2= wx.Button(master_pan, label= 'Browse...')
        nwc_sizer.Add(nwc_button2, pos= (4, 4), flag= wx.TOP|wx.RIGHT,
            border= 5)

        nwc_sb= wx.StaticBox(master_pan, label= 'Optional Attributes')
        nwc_boxsizer= wx.StaticBoxSizer(nwc_sb, wx.VERTICAL)

        nwc_boxsizer.Add(wx.CheckBox(master_pan, label= 'Public'), 0,
            wx.LEFT|wx.TOP, 5)
        nwc_boxsizer.Add(wx.CheckBox(master_pan,
            label= 'Generate Default Constructor'), 0, wx.LEFT, 5)
        nwc_boxsizer.Add(wx.CheckBox(master_pan, label= 'Generate Main Method'),
            0, wx.LEFT|wx.BOTTOM, 5)

        nwc_sizer.Add(nwc_boxsizer, pos= (5, 0), span= (1, 5),
            flag= wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT , border= 10)

        nwc_button3= wx.Button(master_pan, label= 'Help')
        nwc_sizer.Add(nwc_button3, pos= (7, 0), flag= wx.LEFT, border= 10)

        nwc_button4= wx.Button(master_pan, label= 'Ok')
        nwc_sizer.Add(nwc_button4, pos= (7, 3))

        nwc_button5= wx.Button(master_pan, label= 'Cancel')
        nwc_sizer.Add(nwc_button5, pos= (7, 4), span= (1, 1),
            flag= wx.BOTTOM|wx.RIGHT, border= 5)

        nwc_sizer.AddGrowableCol(2)

        # master layout
        master_hbox.Add(rnm_vbox, 1, wx.EXPAND, 10)
        master_hbox.Add(nwc_sizer, 1, wx.EXPAND, 10)
        master_pan.SetSizer(master_hbox)
        # master_pan.SetSizerAndFit(master_hbox)

        self.Centre()
        self.Show()

if __name__== '__main__':
    app= wx.App()
    LayoutB(None, wx.ID_ANY, 'Erasand.03b.Layout')
    app.MainLoop()


Events
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class Event(wx.Frame):
    def __init__(self, parent, id, title):
        super(Event, self).__init__(parent, id, title, size=(300, 500))
        panel= wx.Panel(self)
        vbox= wx.BoxSizer(wx.VERTICAL)

        # move-event: me_
        me_frame= wx.StaticBox(panel, label= 'Move-Event')
        me_sbox= wx.StaticBoxSizer(me_frame, wx.VERTICAL)

        self.__me_x= wx.StaticText(panel, label= 'X: ')
        me_sbox.Add(self.__me_x, 0, wx.EXPAND|wx.LEFT|wx.TOP, 5)
        self.__me_y= wx.StaticText(panel, label= 'Y: ')
        me_sbox.Add(self.__me_y, 0, wx.EXPAND|wx.LEFT|wx.BOTTOM, 5)

        # id-identifyer: id_
        id_frame= wx.StaticBox(panel, label= 'ID-identifyer')
        id_sbox= wx.StaticBoxSizer(id_frame, wx.VERTICAL)

        id_grid= wx.GridSizer(3, 2)
        id_butt_esc= wx.Button(panel, wx.ID_CANCEL)
        id_butt_del= wx.Button(panel, wx.ID_DELETE)
        id_butt_save= wx.Button(panel, wx.ID_SAVE)
        id_butt_exit= wx.Button(panel, wx.ID_EXIT)
        id_butt_stop= wx.Button(panel, wx.ID_STOP)
        id_butt_new= wx.Button(panel, wx.ID_NEW)
        id_grid.AddMany( [(id_butt_esc, 0, wx.TOP|wx.LEFT, 9),
            (id_butt_del, 0, wx.TOP, 9), (id_butt_save, 0, wx.LEFT, 9),
            (id_butt_exit), (id_butt_stop, 0, wx.LEFT, 9), (id_butt_new)] )
        id_sbox.Add(id_grid, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)

        self.__id_txt= wx.StaticText(panel, label= 'You pressed: ')
        id_sbox.Add(self.__id_txt, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM, 5)

        # focusevent: fce_
        fce_frame= wx.StaticBox(panel, label= 'Focus-event')
        fce_sbox= wx.StaticBoxSizer(fce_frame, wx.VERTICAL)

        fce_pan1= fcePanel(panel)
        fce_pan2= fcePanel(panel)
        fce_pan3= fcePanel(panel)
        fce_pan4= fcePanel(panel)
        fce_grid = wx.GridSizer(2, 2, 5, 5)
        fce_grid.AddMany( [(fce_pan1, 0, wx.EXPAND|wx.TOP|wx.LEFT, 9),
            (fce_pan2, 0, wx.EXPAND|wx.TOP|wx.RIGHT, 9),
            (fce_pan3, 0, wx.EXPAND|wx.BOTTOM|wx.LEFT, 9),
            (fce_pan4, 0, wx.EXPAND|wx.BOTTOM|wx.RIGHT, 9)] )
        fce_sbox.Add(fce_grid, 1, wx.EXPAND|wx.ALL, 5)

        # myscrollwinevent: mse_
        mse_frame= wx.StaticBox(panel, label= 'Scroll-event')
        mse_sbox= wx.StaticBoxSizer(mse_frame, wx.VERTICAL)
       
        self.__mse_txt= wx.StaticText(panel, label= '0')
        mse_sbox.Add(self.__mse_txt, 0, wx.EXPAND|wx.ALL, 5)

        panel.SetScrollbar(wx.VERTICAL, 0, 6, 50)
       
        # keyevent: ke_
        ke_frame= wx.StaticBox(panel, label= 'Key-event')
        ke_sbox= wx.StaticBoxSizer(ke_frame, wx.VERTICAL)

        ke_panel= wx.Panel(panel, wx.ID_ANY, style=wx.BORDER_SUNKEN)
        ke_panel.SetBackgroundColour('WHITE')
        ke_sbox.Add(ke_panel, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)

        self.__ke_txt= wx.StaticText(panel, label= 'Klick on the panel ..')
        ke_sbox.Add(self.__ke_txt, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM, 5)

        # window layout
        vbox.Add(me_sbox, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 10)
        vbox.Add(id_sbox, 0, wx.EXPAND|wx.LEFT|wx.RIGHT, 10)
        vbox.Add(fce_sbox, 1, wx.EXPAND|wx.LEFT|wx.RIGHT, 10)
        vbox.Add(mse_sbox, 0, wx.EXPAND|wx.LEFT|wx.RIGHT, 10)
        vbox.Add(ke_sbox, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM, 10)
        panel.SetSizer(vbox)

        self.Bind(wx.EVT_MOVE, self.OnMove)
        self.Bind(wx.EVT_CLOSE, self.OnClose)

        self.Bind(wx.EVT_BUTTON,  self.OnId_esc, id= wx.ID_CANCEL)
        self.Bind(wx.EVT_BUTTON,  self.OnId_del, id= wx.ID_DELETE)
        self.Bind(wx.EVT_BUTTON,  self.OnId_save, id= wx.ID_SAVE)
        self.Bind(wx.EVT_BUTTON,  self.OnId_exit, id= wx.ID_EXIT)
        self.Bind(wx.EVT_BUTTON,  self.OnId_stop, id= wx.ID_STOP)
        self.Bind(wx.EVT_BUTTON,  self.OnId_new, id= wx.ID_NEW)

        panel.Bind(wx.EVT_SCROLLWIN, self.OnScroll)

        ke_panel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
        ke_panel.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
        ke_panel.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)

        self.Centre()
        self.Show()

    def OnMove(self, event):
        x, y= event.GetPosition()
        self.__me_x.SetLabel('X: '+ str(x))
        self.__me_y.SetLabel('Y: '+ str(y))

    def OnClose(self, event):
        dialog = wx.MessageDialog(None, 'Are you sure to quit?',
            'Close-event', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
        answer = dialog.ShowModal()
        if answer== wx.ID_YES:
            self.Destroy()
        else:
            event.Veto()

    def OnId_esc(self, event):
        self.__id_txt.SetLabel('You pressed: Cancel')

    def OnId_del(self, event):
        self.__id_txt.SetLabel('You pressed: Delete')

    def OnId_save(self, event):
        self.__id_txt.SetLabel('You pressed: Save')

    def OnId_exit(self, event):
        self.__id_txt.SetLabel('You pressed: Exit')

    def OnId_stop(self, event):
        self.__id_txt.SetLabel('You pressed: Stop')

    def OnId_new(self, event):
        self.__id_txt.SetLabel('You pressed: New')

    def OnScroll(self, event):
        y= event.GetPosition()
        self.__mse_txt.SetLabel(str(y))

    def OnKeyDown(self, event):
        keycode = event.GetKeyCode()
        self.__ke_txt.SetLabel('Keycode: '+str(keycode))
        event.Skip()

    def OnSetFocus(self, event):
        self.__ke_txt.SetLabel('Press a key ..')

    def OnKillFocus(self, event):
        self.__ke_txt.SetLabel('Klick on the panel ..')

class fcePanel(wx.Panel):
    def __init__(self, parent):
        super(fcePanel, self).__init__(parent, wx.ID_ANY)
        self.__color = '#b3b3b3'
        self.Bind(wx.EVT_PAINT, self.OnPaint)
        self.Bind(wx.EVT_SIZE, self.OnSize)
        self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
        self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)

    def OnPaint(self, event):
        dc= wx.PaintDC(self)
        dc.SetPen(wx.Pen(self.__color))
        x, y= self.GetSize()
        dc.DrawRectangle(0, 0, x, y)

    def OnSetFocus(self, event):
        self.__color= '#0099f7'
        self.Refresh()

    def OnKillFocus(self, event):
        self.__color= '#b3b3b3'
        self.Refresh()

    def OnSize(self, event):
        self.Refresh()

if __name__== '__main__':
    app = wx.App()
    Event(None, wx.ID_ANY, 'Erasand.04.Event')
    app.MainLoop()



Dialoge
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class Dialog(wx.Frame):
    def __init__(self, parent, id, title):
        super(Dialog, self).__init__(parent, id, title, size=(320, 200))
        panel = wx.Panel(self, wx.ID_ANY)

        wx.FutureCall(5000, self.ShowMessage)
       
        vbox = wx.BoxSizer(wx.VERTICAL)
       
        # menubar for about-dialog
        menubar = wx.MenuBar()
        menu_help= wx.Menu()

        id_menu_about= wx.ID_ABOUT
        menu_help.Append(id_menu_about, '&About\tCtrl+I',
            'Show the about-dialog')
        menubar.Append(menu_help, '&Help')

        self.SetMenuBar(menubar)
       
        # toolbar for color-dialog
        id_tool_depth= wx.NewId()

        toolbar = wx.ToolBar(panel, wx.ID_ANY, style= wx.TB_HORIZONTAL)

        toolbar.AddLabelTool(id_tool_depth, '',
            wx.Bitmap('icons_22/preferences-desktop-theme.png'))

        toolbar.Realize()
        vbox.Add(toolbar, 0, wx.EXPAND)
       
        sizer = wx.GridSizer(2, 2, 2, 2)
        btn1 = wx.Button(panel, wx.ID_ANY, label= 'Info')
        btn2 = wx.Button(panel, wx.ID_ANY, label= 'Error')
        btn3 = wx.Button(panel, wx.ID_ANY, label= 'Question')
        btn4 = wx.Button(panel, wx.ID_ANY, label= 'Alert')
        sizer.AddMany( [btn1, btn2, btn3, btn4] )
       
        vbox.Add(sizer, 0, wx.ALL, 15)
        panel.SetSizer(vbox)
       
        btn1.Bind(wx.EVT_BUTTON, self.ShowMessage1)
        btn2.Bind(wx.EVT_BUTTON, self.ShowMessage2)
        btn3.Bind(wx.EVT_BUTTON, self.ShowMessage3)
        btn4.Bind(wx.EVT_BUTTON, self.ShowMessage4)
       
        self.Bind(wx.EVT_MENU, self.OnAboutBox, id= id_menu_about)
        self.Bind(wx.EVT_TOOL, self.OnChangeDepth, id= id_tool_depth)

        self.Centre()
        self.Show()

    def ShowMessage(self):
        wx.MessageBox('Future Call Message', 'Info')

    def ShowMessage1(self, event):
        dialog = wx.MessageDialog(self, 'Download completed', 'Info',
            wx.OK)
        dialog.ShowModal()

    def ShowMessage2(self, event):
        dialog = wx.MessageDialog(self, 'Error loading file', 'Error',
            style= wx.OK|wx.ICON_ERROR)
        dialog.ShowModal()

    def ShowMessage3(self, event):
        dialog = wx.MessageDialog(self, 'Are you sure to quit?', 'Question',
            style= wx.YES_NO|wx.NO_DEFAULT|wx.ICON_QUESTION)
        dialog.ShowModal()

    def ShowMessage4(self, event):
        dialog = wx.MessageDialog(self, 'Unallowed operation', 'Exclamation',
            style= wx.OK|wx.ICON_EXCLAMATION)
        dialog.ShowModal()

    def OnAboutBox(self, event):
        description= '''File Hunter is an advanced file manager for the Unix operating
system. Features include powerful built-in editor, advanced search capabilities,
powerful batch renaming, file comparison, extensive archive handling and more.
'''
        licence= '''File Hunter is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

File Hunter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
See the GNU General Public License for more details. You should have received a copy of
the GNU General Public License along with File Hunter; if not, write to
the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA'''
        info= wx.AboutDialogInfo()
        info.SetIcon(wx.Icon('icons_32/system-file-manager.png',
            wx.BITMAP_TYPE_PNG))
        info.SetName('File Hunter')
        info.SetVersion('1.0')
        info.SetDescription(description)
        info.SetCopyright('(c) 2007 jan bodnar')
        info.SetWebSite('http://www.zetcode.com')
        info.SetLicence(licence)
        info.AddDeveloper('jan bodnar')
        info.AddDocWriter('jan bodnar')
        info.AddArtist('The Tango crew')
        info.AddTranslator('jan bodnar')
        wx.AboutBox(info)
       
    def OnChangeDepth(self, event):
        chgdep = ChangeDepth(self, wx.ID_ANY, 'Change Color Depth')
        chgdep.ShowModal()
        chgdep.Destroy()

class ChangeDepth(wx.Dialog):
    def __init__(self, parent, id, title):
        super(ChangeDepth, self).__init__(parent, id, title, size=(200, 200))

        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)

        frame= wx.StaticBox(panel, label= 'Colours')
        sbox= wx.StaticBoxSizer(frame, wx.VERTICAL)
       
        butt_r1= wx.RadioButton(panel, label= '256 Colors', style=wx.RB_GROUP)
        sbox.Add(butt_r1)

        butt_r2= wx.RadioButton(panel, label= '16 Colors')
        sbox.Add(butt_r2)

        butt_r3= wx.RadioButton(panel, label= '2 Colors')
        sbox.Add(butt_r3)

        hbox1= wx.BoxSizer(wx.HORIZONTAL)
       
        butt_r4= wx.RadioButton(panel, label= 'Custom')
        hbox1.Add(butt_r4)
       
        txt_inp= wx.TextCtrl(panel)
        hbox1.Add(txt_inp)
       
        sbox.Add(hbox1)

        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
       
        butt_ok = wx.Button(panel, label= 'Ok', size=(70, 30))
        hbox2.Add(butt_ok, 1)
       
        butt_close = wx.Button(panel, label= 'Close', size=(70, 30))
        hbox2.Add(butt_close, 1, wx.LEFT, 10)

        vbox.Add(sbox, 0, wx.EXPAND|wx.ALL, 5)
        vbox.Add(hbox2, 1, wx.LEFT|wx.RIGHT|wx.BOTTOM, 5)

        panel.SetSizer(vbox)

if __name__== '__main__':
    app = wx.App()
    Dialog(None, wx.ID_ANY, 'Erasand.05.Dialog')
    app.MainLoop()



Widgets (unfertiges Skript)
#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx
import random

APP_WIDTH= 600
APP_HEIGHT= 500

class Widget(wx.Frame):
    def __init__(self, parent, id, title):
        super(Widget, self).__init__(parent, id, title,
            size=(APP_WIDTH, APP_HEIGHT))

        # menubar
        menubar= wx.MenuBar()
       
        menu_file= wx.Menu()
        id_menu_exit= wx.ID_EXIT
        menu_file.Append(id_menu_exit, '&Quit\tCtrl+W',
            'Quit the application')
        self.Bind(wx.EVT_MENU, self.on_close, id= id_menu_exit)
        menubar.Append(menu_file, '&File')
       
        menu_play= wx.Menu()
        menu_play.Append(wx.ID_ANY, '&Video',
            'Play a video')
        menubar.Append(menu_play, '&Play')
       
        menu_view= wx.Menu()
        menu_view.Append(wx.ID_ANY, 'Show &all files',
            'Play all open files')
        menubar.Append(menu_view, '&View')
       
        menu_tools= wx.Menu()
        menu_tools.Append(wx.ID_ANY, '&Convert',
            'Convert in a other format')
        menubar.Append(menu_tools, '&Tools')
       
        menu_favorites= wx.Menu()
        menu_favorites.Append(wx.ID_ANY, '&Add to favorites',
            'Add current file to favorites')
        menubar.Append(menu_favorites, 'F&avorites')
       
        menu_help= wx.Menu()
        menu_help.Append(wx.ID_ANY, '&About',
            'Info about Erasand.06.Widget.py')

        menubar.Append(menu_help, '&Help')
       
        # general layout
        panel= wx.Panel(self)
        hbox1= wx.BoxSizer(wx.HORIZONTAL)
        vbox1= wx.BoxSizer(wx.VERTICAL)
        vbox2= wx.BoxSizer(wx.VERTICAL)
       
        # wx.Button
        frame1= wx.StaticBox(panel, label= 'wx.Button')
        sbox1= wx.StaticBoxSizer(frame1, wx.VERTICAL)
       
        butt_close= wx.Button(panel, wx.ID_CLOSE)
        sbox1.Add(butt_close, 0, wx.EXPAND, 5)
        butt_close.Bind(wx.EVT_BUTTON, self.on_close)

        butt_random= wx.Button(panel, label= 'Random Move')
        sbox1.Add(butt_random, 0, wx.EXPAND, 5)
        butt_random.Bind(wx.EVT_BUTTON, self.on_random_move)
       
        #wx.ToggleButton
        frame2= wx.StaticBox(panel, label= 'wx.Toggle-Button',
            style= wx.SUNKEN_BORDER)
        sbox2= wx.StaticBoxSizer(frame2, wx.VERTICAL)
       
        self.__tgl_pan= wx.Panel(panel)
        self.__colour= wx.Colour(0, 0, 0)
        self.__tgl_pan.SetBackgroundColour(self.__colour)
        sbox2.Add(self.__tgl_pan, 0, wx.EXPAND, 5)
       
        butt_tgl1= wx.ToggleButton(panel, label= 'red')
        sbox2.Add(butt_tgl1, 0, wx.EXPAND, 5)
        butt_tgl1.Bind(wx.EVT_TOGGLEBUTTON, self.on_toggle1)
       
        butt_tgl2= wx.ToggleButton(panel, label= 'green')
        sbox2.Add(butt_tgl2, 0, wx.EXPAND, 5)
        butt_tgl2.Bind(wx.EVT_TOGGLEBUTTON, self.on_toggle2)
       
        butt_tgl3= wx.ToggleButton(panel, label= 'blue')
        sbox2.Add(butt_tgl3, 0, wx.EXPAND, 5)
        butt_tgl3.Bind(wx.EVT_TOGGLEBUTTON, self.on_toggle3)
       
        # wx.BitmapButton
        frame3= wx.StaticBox(panel, label= 'wx.BitmapButton & wx.Slider')
        sbox3= wx.StaticBoxSizer(frame3, wx.VERTICAL)
       
        play_pan= wx.Panel(panel, size=(200,200))
        play_pan.SetBackgroundColour(wx.BLACK)
        sbox3.Add(play_pan, 0, wx.EXPAND|wx.ALL, 10)
       
        play_slid= wx.Slider(panel, wx.ID_ANY, 0, 0, 1000)
        sbox3.Add(play_slid, 0, wx.EXPAND | wx.BOTTOM, 10)

        hbox2= wx.BoxSizer(wx.HORIZONTAL)

        pause= wx.BitmapButton(panel, wx.ID_ANY,
            wx.Bitmap('icons_22/media-playback-pause.png'))
        hbox2.Add(pause)

        play= wx.BitmapButton(panel, wx.ID_ANY,
            wx.Bitmap('icons_22/media-playback-start.png'))
        hbox2.Add(play, 0, wx.RIGHT, 5)

        next= wx.BitmapButton(panel, wx.ID_ANY,
            wx.Bitmap('icons_22/media-skip-forward.png'))
        hbox2.Add(next, 0, wx.LEFT, 5)

        prev= wx.BitmapButton(panel, wx.ID_ANY,
            wx.Bitmap('icons_22/media-skip-backward.png'))
        hbox2.Add(prev, 0, wx.RIGHT, 5)

        volume= wx.BitmapButton(panel, wx.ID_ANY,
            wx.Bitmap('icons_22/audio-volume-medium.png'))
        hbox2.Add(volume, 0, wx.LEFT, 5)

        vol_slid= wx.Slider(panel, wx.ID_ANY, 0, 0, 100,
            size=(120, -1))
        hbox2.Add(vol_slid, 0, wx.TOP|wx.LEFT, 5)

        sbox3.Add(hbox2, 0, wx.EXPAND)
       
        #wx.StaticLine
        hline1= wx.StaticLine(panel, size= (200, 1),
            style= wx.LI_HORIZONTAL)
        hline2= wx.StaticLine(panel, size= (200, 1),
            style= wx.LI_HORIZONTAL)
        vline1= wx.StaticLine(panel, size= (1, 450),
            style= wx.LI_VERTICAL)
       
        #general layout
        vbox1.Add(sbox1, 0, wx.ALL, 10)
        vbox1.Add(hline1)
        vbox1.Add(sbox2, 0, wx.ALL, 10)
        vbox1.Add(hline2)
        vbox2.Add(sbox3, 0, wx.ALL, 10)
        hbox1.Add(vbox1, 0, wx.EXPAND)
        hbox1.Add(vline1)
        hbox1.Add(vbox2, 0, wx.EXPAND)
        panel.SetSizer(hbox1)
       
        self.SetMenuBar(menubar)
        self.CreateStatusBar()

        self.SetMinSize((350, 300))
        self.Centre()
        self.Show()
       
    def on_close(self, event):
        self.Close()
       
    def on_random_move(self, event):
        screensize= wx.GetDisplaySize()
        randx= random.randrange(0, screensize.x- APP_WIDTH)
        randy= random.randrange(0, screensize.y- APP_HEIGHT)
        self.Move((randx, randy))
       
    def on_toggle1(self, event):
        green= self.__colour.Green()
        blue= self.__colour.Blue()
        if  self.__colour.Red():
            self.__colour.Set(0, green, blue)
        else:
            self.__colour.Set(255, green, blue)
        self.__tgl_pan.SetBackgroundColour(self.__colour)

    def on_toggle2(self, event):
        red= self.__colour.Red()
        blue= self.__colour.Blue()
        if  self.__colour.Green():
            self.__colour.Set(red, 0, blue)
        else:
            self.__colour.Set(red, 255, blue)
        self.__tgl_pan.SetBackgroundColour(self.__colour)

    def on_toggle3(self, event):
        red= self.__colour.Red()
        green= self.__colour.Green()
        if  self.__colour.Blue():
            self.__colour.Set(red, green, 0)
        else:
            self.__colour.Set(red, green, 255)
        self.__tgl_pan.SetBackgroundColour(self.__colour)

if __name__== '__main__':
    app= wx.App()
    Widget(None, wx.ID_ANY, 'Erasand.06.Widget')
    app.MainLoop()