Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import wx
- from ObjectListView import (ObjectListView, ColumnDefn)
- class MainFrame(wx.Frame):
- MIN_SIZE = (500, 400)
- def __init__(self, *args, **kwargs):
- super(MainFrame, self).__init__(None, *args, **kwargs)
- self.panel = MainPanel(self)
- sizer = wx.BoxSizer(wx.VERTICAL)
- sizer.Add(self.panel)
- self.SetSizer(sizer)
- self.Center()
- self.SetMinSize(self.MIN_SIZE)
- self.Show()
- widgets = [Widget('a'), Widget('b'),Widget('c')]
- self.panel.olv_widgets.SetObjects(widgets)
- def on_olv_widgets_right_down(self,event):
- self.PopupMenu(UpDownMenu(self), event.GetPosition())
- print(event.GetPosition())
- def on_cell_select(self, event):
- print('on_cell_select')
- def move_item_down(self, event):
- print('move_item_down')
- def move_item_up(self, event):
- print('move_item_up')
- class MainPanel(wx.Panel):
- LIST_SIZE = (2000, 2000)
- def __init__(self, parent, *args, **kwargs):
- super(MainPanel, self).__init__(parent, *args, **kwargs)
- self.olv_widgets = ObjectListView(self, wx.ID_ANY,
- style=wx.LC_REPORT|wx.SUNKEN_BORDER,
- size=self.LIST_SIZE)
- self.olv_widgets.SetColumns(
- [ColumnDefn('Widget', 'left', parent.MIN_SIZE[0],
- 'description', isSpaceFilling=True)])
- self.olv_widgets.Bind(wx.EVT_RIGHT_DOWN, parent.on_olv_widgets_right_down)
- self.olv_widgets.Bind(wx.EVT_LIST_ITEM_SELECTED, parent.on_cell_select)
- sizer = wx.BoxSizer(wx.VERTICAL)
- sizer.Add(self.olv_widgets, proportion=1, flag=wx.EXPAND)
- self.SetSizer(sizer)
- sizer.Fit(self)
- class UpDownMenu(wx.Menu):
- def __init__(self, parent):
- super(UpDownMenu, self).__init__()
- up_menu_item = wx.MenuItem(self, wx.NewId(), 'Move item up')
- self.Append(up_menu_item)
- self.Bind(wx.EVT_MENU, parent.move_item_up, up_menu_item)
- down_menu_item = wx.MenuItem(self, wx.NewId(), 'Move item down')
- self.Append(down_menu_item)
- self.Bind(wx.EVT_MENU, parent.move_item_down, down_menu_item)
- class Widget(object):
- def __init__(self, description):
- self.description = description
- if __name__ == '__main__':
- wx_app = wx.App()
- MainFrame()
- wx_app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement