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()
# -*- 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()