Python wx 模块,grid() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用wx.grid()

项目:mobileinsight-core    作者:mobile-insight    | 项目源码 | 文件源码
def Open(self, e):
        openFileDialog = wx.FileDialog(
            self,
            "Open Log file",
            "",
            "",
            "log files (*.mi2log) |*.mi2log| All files |*.*",
            wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE)
        if (openFileDialog.ShowModal() == wx.ID_OK):
            # print 'Selected %s' %openFileDialog.GetPath()
            print 'Selected %s' % openFileDialog.Paths
            try:
                self.grid.ClearGrid()

                # thread.start_new_thread(openFile,(openFileDialog.GetPath(),))
                # t = Thread(target = self.openFile, args=(openFileDialog.GetPath(),self.selectedTypes))
                t = Thread(
                    target=self.openFile,
                    args=(
                        openFileDialog.Paths,
                        self.selectedTypes))
                self.progressDialog = ProgressDialog(self)
                t.start()
                self.progressDialog.ShowModal()

                if len(openFileDialog.Paths) == 1:
                    self.SetTitle(openFileDialog.GetPath())
                else:
                    self.SetTitle(
                        "Multiple files in " +
                        openFileDialog.Directory)

            except e:
                print "Error while opening file.", e
            # if (random() > 0.5):
            #    self.SetupGrid(self.data1)
            # else:
            #    self.SetupGrid(self.data2)
项目:FestEngine    作者:Himura2la    | 项目源码 | 文件源码
def switch_track_sync(self, from_grid=True):
        if not self.playlist:
            return
        if self.current_track_i >= 0:
            if self.player.get_state() in {vlc.State.Playing, vlc.State.Paused}:
                self.playlist[self.current_track_i]['color'] = Colors.BG_SKIPPED
                if self.fade_in_out and self.player.get_state() == vlc.State.Playing:
                    self.fade_out_sync(self.stop_fade_speed)  # Blocks thread
            else:
                self.playlist[self.current_track_i]['color'] = Colors.BG_PLAYED_TO_END
        if self.window_exists():
            self.window.grid.SetCellBackgroundColour(self.current_track_i, 0,
                                                     self.playlist[self.current_track_i]['color'])
            self.window.grid.ForceRefresh()  # Updates colors

        if self.window_exists() and from_grid:
            self.current_track_i = self.window.grid.GetSelectedRows()[0]
        else:
            self.current_track_i = (self.current_track_i + 1) % len(self.playlist)

        self.parent.bg_player.play_sync()
        self.parent.bg_pause_switch.Enable(True)
项目:Cosplay2-Automation    作者:Himura2la    | 项目源码 | 文件源码
def on_c2_info(self, e):
        self.menu_c2_info.Enable(False)
        self.grid.ClearGrid()
        self.grid_set_shape(2, 2, 100)
        self.grid.SetColSize(1, 200)
        self.grid.SetCellValue(0, 0, "Event Name")
        self.grid.SetCellValue(1, 0, "Org Login")
        self.grid_column_readonly(0)

        if not self.read_c2_info():
            self.c2_info = ["", ""]

        self.grid.SetCellValue(0, 1, self.c2_info[0])
        self.grid.SetCellValue(1, 1, self.c2_info[1])

        apply_button = wx.Button(self, wx.ID_APPLY)
        self.Bind(wx.EVT_BUTTON, self.on_c2_info_apply, apply_button)
        self.actions_panel.Add(apply_button, 1)
        self.Layout()
项目:Cosplay2-Automation    作者:Himura2la    | 项目源码 | 文件源码
def on_c2_info_apply(self, e):

        self.c2_info = self.grid.GetCellValue(0, 1), self.grid.GetCellValue(1, 1)

        if any(map(lambda x: len(x) < 3, self.c2_info)):
            self.status("Your data seems to be invalid...")
            return

        with open(self.c2_info_filename, 'w') as f:
            f.write(' '.join(self.c2_info))

        if not self.read_c2_info():
            self.status("Something went wrong T_T")
            return
        self.menu_c2_info.Enable(True)
        self.grid.ClearGrid()
        self.grid_set_shape(1, 1, self.grid_no_data_width)
        self.grid_column_readonly(0)
        self.grid.SetCellValue(0, 0, self.grid_no_data_text)
        self.actions_panel.Clear()
        self.Layout()
        self.status("Default credentials saved at " + self.c2_info_filename)
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def _updateColAttrs(self, grid):
        """
        wx.grid.Grid -> update the column attributes to add the
        appropriate renderer given the column name.

        Otherwise default to the default renderer.
        """
        for row in range(self.GetNumberRows()):
            row_highlights = self.Highlights.get(row, {})
            for col in range(self.GetNumberCols()):
                colname = self.GetColLabelValue(col, False)

                grid.SetReadOnly(row, col, True)
                grid.SetCellEditor(row, col, None)
                grid.SetCellRenderer(row, col, None)

                highlight_colours = row_highlights.get(colname.lower(), [(wx.WHITE, wx.BLACK)])[-1]
                grid.SetCellBackgroundColour(row, col, highlight_colours[0])
                grid.SetCellTextColour(row, col, highlight_colours[1])
            self.ResizeRow(grid, row)
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def __init__(self):
        wx.Frame.__init__(self, None, title="Tutorial")

        self.eventDict = {}
        evt_names = [x for x in dir(wx) if x.startswith("EVT_")]
        for name in evt_names:
            evt = getattr(wx, name)
            if isinstance(evt, wx.PyEventBinder):
                self.eventDict[evt.typeId] = name

        grid_evt_names = [x for x in dir(wx.grid) if x.startswith("EVT_")]
        for name in grid_evt_names:
            evt = getattr(wx.grid, name)
            if isinstance(evt, wx.PyEventBinder):
                self.eventDict[evt.typeId] = name

        panel = wx.Panel(self, wx.ID_ANY)
        btn = wx.Button(panel, wx.ID_ANY, "Get POS")

        btn.Bind(wx.EVT_BUTTON, self.onEvent)
        panel.Bind(wx.EVT_LEFT_DCLICK, self.onEvent)
        panel.Bind(wx.EVT_RIGHT_DOWN, self.onEvent)
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def OnInit(self):
        self.res = xrc.XmlResource("grid.xrc")

        frame = self.res.LoadFrame(None, 'MyFrame')
        panel = xrc.XRCCTRL(frame, "MyPanel")
        grid = xrc.XRCCTRL(panel, "MyGrid")
        print(type(grid))
        grid.CreateGrid(25, 6)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid, 1, wx.EXPAND|wx.ALL, 5)

        panel.SetSizer(sizer)

        frame.Show()
        return True
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def printSelectedCells(self, top_left, bottom_right):
        """
        Based on code from
        http://ginstrom.com/scribbles/2008/09/07/getting-the-selected-cells-from-a-wxpython-grid/
        """
        cells = []

        rows_start = top_left[0]
        rows_end = bottom_right[0]

        cols_start = top_left[1]
        cols_end = bottom_right[1]

        rows = range(rows_start, rows_end+1)
        cols = range(cols_start, cols_end+1)

        cells.extend([(row, col)
                      for row in rows
                      for col in cols])

        print("You selected the following cells: ", cells)

        for cell in cells:
            row, col = cell
            print(self.myGrid.GetCellValue(row, col))
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def AppendCols(self, numCols=1):
#        for part in self._OM.list('part', self.partitionuid):
#            print '\nparts1', part.uid
        for i in range(numCols):
            prop = self._OM.new('property')
            prop.defaultdata = np.nan
#            for part in self.partuid:
#                self._OM.add(prop, part)
#            print '\nparts2', self.partuid
            self._OM.add(prop, self.partitionuid)
            self.propmap.append(prop.uid)

        self.GetView().BeginBatch()
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED, numCols)
        self.GetView().ProcessTableMessage(msg)
        self.GetView().EndBatch()

        return True
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def GetAttr(self, row, col, kind):

        #if _iswxphoenix:
        attr = wx.grid.GridCellAttr().Clone()
        #else:
        #    attr = wx.grid.GridCellAttr()

        if col >= self.N_COLS:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        elif col == 0:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        elif col == 1:
            part = self._OM.get(self.partmap[row])
            attr.SetBackgroundColour(part.color)
            attr.SetReadOnly(True)
        elif col == 2:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        elif col == 3:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        return attr
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def on_cell_dlclick(self, event):
        if event.GetCol() == 1:
            row = event.GetRow()
            table = self.tables[self.currentwellindex][self.currentpartitionindex]
            color = table.get_color(row)

            global COLOUR_DATA
            COLOUR_DATA.SetColour(color)

            dlg = wx.ColourDialog(self, COLOUR_DATA)

            if dlg.ShowModal() == wx.ID_OK:
                COLOUR_DATA = dlg.GetColourData()
                color = COLOUR_DATA.GetColour().Get(True)
                # TODO: alpha
                table.set_color(row, color)
                self.grid.ForceRefresh()
            dlg.Destroy()
        else:
            event.Skip()
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def AppendRows(self, numRows=1):
        rocktype = self.GrainEntry()
#        rocktype = self._OM.new('rocktype')
        rocktype.defaultdata = np.nan
        self._OM.add(rocktype, self.rocktableuid)

        self.rocktypemap.append(rocktype.uid)
        color = self.get_color(0)
        self.set_color(-1,color)

        self.GetView().BeginBatch()
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, numRows)
        self.GetView().ProcessTableMessage(msg)
        self.GetView().EndBatch()

        return True
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def GetAttr(self, row, col, kind):

        #if _iswxphoenix:
        attr = wx.grid.GridCellAttr().Clone()

        if col >= self.N_COLS:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        elif col == 0:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        elif col == 1:
            rocktype = self._OM.get(self.rocktypemap[row])
            attr.SetBackgroundColour(rocktype.color)
            attr.SetReadOnly(True)
        elif col == 2:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        elif col == 3:
            attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
        return attr
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def on_cell_dlclick(self, event):
        if event.GetCol() == 1:
            row = event.GetRow()
            table = self.tables[self.currentwellindex][self.currentrocktableindex]
            color = table.get_color(row)

            global COLOUR_DATA
            COLOUR_DATA.SetColour(color)

            dlg = wx.ColourDialog(self, COLOUR_DATA)

            if dlg.ShowModal() == wx.ID_OK:
                COLOUR_DATA = dlg.GetColourData()
                color = COLOUR_DATA.GetColour().Get(True)
                # TODO: alpha
                table.set_color(row, color)
                self.grid.ForceRefresh()
            dlg.Destroy()
        else:
            event.Skip()
项目:FestEngine    作者:Himura2la    | 项目源码 | 文件源码
def load_playlist_to_grid(self):
        if self.window.grid.GetNumberRows() > 0:
            self.window.grid.DeleteRows(0, self.window.grid.GetNumberRows(), False)
        self.window.grid.AppendRows(len(self.playlist))
        for i in range(len(self.playlist)):
            self.window.grid.SetCellValue(i, 0, self.playlist[i]['title'])
            self.window.grid.SetReadOnly(i, 0)
            self.window.grid.SetCellBackgroundColour(i, 0, self.playlist[i]['color'])
        self.window.grid.AutoSize()
        self.window.Layout()
        self.window.play_btn.Enable(True)
        player_state = self.parent.bg_player.player.get_state()
        if player_state in range(5):  # If playing
            self.window.pause_btn.SetValue(player_state == vlc.State.Paused)
项目:FestEngine    作者:Himura2la    | 项目源码 | 文件源码
def play_sync(self):
        self.player.set_media(self.vlc_instance.media_new(self.playlist[self.current_track_i]['path']))
        if self.player.play() != 0:  # [Play] button is pushed here!
            wx.CallAfter(lambda: self.parent.set_bg_player_status("Playback FAILED !!!"))
            return

        state = self.player.get_state()
        start = time.time()
        while state != vlc.State.Playing:
            state = self.player.get_state()
            status = "%s [%fs]" % (self.parent.player_state_parse(state), (time.time() - start))
            wx.CallAfter(lambda: self.parent.set_bg_player_status(status))
            time.sleep(0.005)

        self.playlist[self.current_track_i]['color'] = Colors.BG_PLAYING_NOW

        if self.window_exists():
            def ui_upd():
                self.window.pause_btn.Enable(True)
                self.window.lock_btn.Enable(True)
                self.window.grid.SetCellBackgroundColour(self.current_track_i, 0, Colors.BG_PLAYING_NOW)
                self.window.grid.ForceRefresh()  # Updates colors
                self.window.pause_btn.SetValue(False)

            wx.CallAfter(ui_upd)

        volume = 0 if self.fade_in_out else self.volume
        start = time.time()
        while self.player.audio_get_volume() != volume:
            self.player.audio_set_mute(False)
            self.player.audio_set_volume(volume)
            status = "Trying to unmute... [%fs]" % (time.time() - start)
            wx.CallAfter(lambda: self.parent.set_bg_player_status(status))
            time.sleep(0.005)

        if self.fade_in_out:
            self.fade_in_sync(self.stop_fade_speed)

        wx.CallAfter(lambda: self.parent.set_bg_player_status("%s Vol:%d" %
                                                              (self.parent.player_state_parse(self.player.get_state()),
                                                               self.player.audio_get_volume())))
项目:mobileinsight-core    作者:mobile-insight    | 项目源码 | 文件源码
def SetupGrid(self):
        self.min_time = datetime.strptime("3000 Jan 1", '%Y %b %d')
        self.max_time = datetime.strptime("1900 Jan 1", '%Y %b %d')

        n = len(self.data_view)
        # self.grid.CreateGrid(max(25, n), 2)
        if n > self.grid.GetNumberRows():
            self.grid.InsertRows(0, n - self.grid.GetNumberRows())
        else:
            self.grid.DeleteRows(0, self.grid.GetNumberRows() - n)

        self.grid.ClearGrid()
        self.grid.SetColLabelValue(0, "Timestamp")
        self.grid.SetColLabelValue(1, "Type ID")
        for i in range(n):
            try:
                cur_time = datetime.strptime(
                    self.data_view[i]["Timestamp"],
                    '%Y-%m-%d  %H:%M:%S.%f')
            except Exception as e:
                cur_time = datetime.strptime(
                    self.data_view[i]["Timestamp"], '%Y-%m-%d  %H:%M:%S')
            self.min_time = min(self.min_time, cur_time)
            self.max_time = max(self.max_time, cur_time)
            self.grid.SetCellValue(i, 0, str(self.data_view[i]["Timestamp"]))
            self.grid.SetCellValue(i, 1, str(self.data_view[i]["TypeID"]))
            self.grid.SetReadOnly(i, 0)
            self.grid.SetReadOnly(i, 1)
        #self.grid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.onRowClick)
项目:Cosplay2-Automation    作者:Himura2la    | 项目源码 | 文件源码
def grid_set_shape(self, new_rows, new_cols, default_col_size=None):
        current_rows, current_cols = self.grid.GetNumberRows(), self.grid.GetNumberCols()
        if new_rows < current_rows:
            self.grid.DeleteRows(0, current_rows - new_rows, True)
        if new_cols < current_cols:
            self.grid.DeleteCols(0, current_cols - new_cols, True)
        if new_rows > current_rows:
            self.grid.AppendRows(new_rows - current_rows)
        if new_cols > current_cols:
            self.grid.AppendCols(new_cols - current_cols)

        if default_col_size:
            map(lambda col: self.grid.SetColSize(col, default_col_size), range(new_cols))
项目:Cosplay2-Automation    作者:Himura2la    | 项目源码 | 文件源码
def grid_column_readonly(self, col):
        grid_disabled_color = wx.Colour(240, 240, 240)

        def disable_cell(cell):
            self.grid.SetReadOnly(*cell)
            self.grid.SetCellBackgroundColour(*(cell + (grid_disabled_color,)))
        map(disable_cell, [(row, col) for row in range(self.grid.GetNumberRows())])

    # ------------------ Cosplay2 ------------------
项目:magic-card-database    作者:drknotter    | 项目源码 | 文件源码
def __init__(self, parent):

        wx.Frame.__init__(self, parent, -1, "Simple Grid Demo", size=(640,480))
        self.grid = SimpleGrid(self)
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def __init__(self, parent, data, colnames):
        # The base class must be initialized *first*
        wx.grid.PyGridTableBase.__init__(self)
        self.data = data
        self.colnames = colnames
        self.Highlights = {}
        self.Parent = parent
        # XXX
        # we need to store the row length and collength to
        # see if the table has changed size
        self._rows = self.GetNumberRows()
        self._cols = self.GetNumberCols()
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def ResetView(self, grid):
        """
        (wx.grid.Grid) -> Reset the grid view.   Call this to
        update the grid if rows and columns have been added or deleted
        """
        grid.CloseEditControl()
        grid.BeginBatch()
        for current, new, delmsg, addmsg in [
            (self._rows, self.GetNumberRows(), wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED),
            (self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
        ]:
            if new < current:
                msg = wx.grid.GridTableMessage(self, delmsg, new, current-new)
                grid.ProcessTableMessage(msg)
            elif new > current:
                msg = wx.grid.GridTableMessage(self, addmsg, new-current)
                grid.ProcessTableMessage(msg)
                self.UpdateValues(grid)
        grid.EndBatch()

        self._rows = self.GetNumberRows()
        self._cols = self.GetNumberCols()
        # update the column rendering scheme
        self._updateColAttrs(grid)

        # update the scrollbars and the displayed part of the grid
        grid.AdjustScrollbars()
        grid.ForceRefresh()
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def UpdateValues(self, grid):
        """Update all displayed values"""
        # This sends an event to the grid table to update all of the values
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
        grid.ProcessTableMessage(msg)
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def SetFocus(self):
        if self:
            wx.grid.Grid.SetFocus(self)
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def _updateColAttrs(self, grid):
        """
        wx.grid.Grid -> update the column attributes to add the
        appropriate renderer given the column name.

        Otherwise default to the default renderer.
        """

        for row in range(self.GetNumberRows()):
            row_highlights = self.Highlights.get(row, {})
            for col in range(self.GetNumberCols()):
                editor = None
                renderer = None
                colname = self.GetColLabelValue(col, False)
                if col != 0:
                    grid.SetReadOnly(row, col, False)
                    if colname == "Name":
                        editor = wx.grid.GridCellTextEditor()
                        renderer = wx.grid.GridCellStringRenderer()
                    elif colname == "Initial Value":
                        editor = wx.grid.GridCellTextEditor()
                        renderer = wx.grid.GridCellStringRenderer()
                    elif colname == "Type":
                        editor = wx.grid.GridCellTextEditor()
                else:
                    grid.SetReadOnly(row, col, True)

                grid.SetCellEditor(row, col, editor)
                grid.SetCellRenderer(row, col, renderer)

                highlight_colours = row_highlights.get(colname.lower(), [(wx.WHITE, wx.BLACK)])[-1]
                grid.SetCellBackgroundColour(row, col, highlight_colours[0])
                grid.SetCellTextColour(row, col, highlight_colours[1])
            self.ResizeRow(grid, row)
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def SingleCellEditor(*x):
    return wx.grid.GridCellChoiceEditor()
项目:beremiz    作者:nucleron    | 项目源码 | 文件源码
def _updateColAttrs(self, grid):
        """
        wxGrid -> update the column attributes to add the
        appropriate renderer given the column name.

        Otherwise default to the default renderer.
        """

        typelist = None
        accesslist = None
        for row in range(self.GetNumberRows()):
            for col in range(self.GetNumberCols()):
                editor = None
                renderer = None
                colname = self.GetColLabelValue(col, False)

                if colname in ["Name", "Initial", "Description", "OnChange", "Options"]:
                    editor = wx.grid.GridCellTextEditor()
                elif colname == "Class":
                    editor = wx.grid.GridCellChoiceEditor()
                    editor.SetParameters("input,memory,output")
                elif colname == "Type":
                    pass
                else:
                    grid.SetReadOnly(row, col, True)

                grid.SetCellEditor(row, col, editor)
                grid.SetCellRenderer(row, col, renderer)

                grid.SetCellBackgroundColour(row, col, wx.WHITE)
            self.ResizeRow(grid, row)
项目:imagepy    作者:Image-Py    | 项目源码 | 文件源码
def __init__(self, data, colLabels=None, rowLabels=None):
        wx.grid.GridTableBase.__init__(self)
        self.data = data # data is stored as a list of list 
        self.rowLabels = rowLabels
        self.colLabels = colLabels
项目:imagepy    作者:Image-Py    | 项目源码 | 文件源码
def __init__(self, parent, title, data, cols=None, rows=None):
        wx.Frame.__init__(self, parent, -1, title)
        logopath = os.path.join(root_dir, 'data/logo.ico')
        self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_3DLIGHT ) )
        self.SetIcon(wx.Icon(logopath, wx.BITMAP_TYPE_ICO))
        TableLogManager.add(title, self)
        self.data, self.cols, self.rows = data, cols, rows
        tableBase = GenericTable(data, cols, rows)
        self.grid = wx.grid.Grid(self)

        ## create tablegrid and set tablegrid value 
        #self.grid.SetTable(tableBase)
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        self.grid.CreateGrid(len(data), len(data[0]))
        if cols!=None:
            for i in range(len(cols)):
                self.grid.SetColLabelValue(i, cols[i])
        if rows!=None:
            for i in range(len(rows)):
                self.grid.SetColLabelValue(i, rows[i])
        for i in range(len(data)):
            for j in range(len(data[0])):
                self.grid.SetCellValue(i, j,str(data[i][j]))
        self.grid.AutoSize()

        ## create menus
        menus = [('File(&F)',
                  [('Save as tab', self.OnSaveTab),
                   ('Save as csv', self.OnSaveCsv),
                   ('-'),
                   ('Exit', self.OnClose)
                   ]
                  ),                 
                 ('Help(&H)', 
                  [('About', self.OnAbout)]
                  )
                 ]

        ## bind the menus with the correspond events 
        menuBar=wx.MenuBar()
        for menu in menus:
            m = wx.Menu()
            for item in menu[1]:
                if item[0]=='-':
                    m.AppendSeparator()
                else:
                    i = m.Append(-1, item[0])
                    if item[1]!=None:
                        self.Bind(wx.EVT_MENU,item[1], i)
            menuBar.Append(m,menu[0])
        self.SetMenuBar(menuBar) 
        self.Fit()
项目:smartschool    作者:asifkodur    | 项目源码 | 文件源码
def OnMenu_Exit(self,event):

        #print "grid closs"

        self.Close()
        event.Skip()
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)

        grid = gridlib.Grid(self)
        grid.CreateGrid(25,12)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid, 0, wx.EXPAND)
        self.SetSizer(sizer)
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def __init__(self, panel1, panel2):
        self.panel1 = panel1
        self.panel2 = panel2
        self.panel1.grid.Bind(wx.EVT_SCROLLWIN, self.onScrollWin1)
        self.panel2.grid.Bind(wx.EVT_SCROLLWIN, self.onScrollWin2)
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def onScrollWin2(self, event):
        if event.Orientation == wx.SB_HORIZONTAL:
            self.panel1.grid.Scroll(event.Position, -1)
        else:
            self.panel1.grid.Scroll(-1, event.Position)
        event.Skip()
项目:wxpythoncookbookcode    作者:driscollis    | 项目源码 | 文件源码
def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)
        self.grid = gridlib.Grid(self, style=wx.BORDER_SUNKEN)
        self.grid.CreateGrid(25,8)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.grid, 1, wx.EXPAND)
        self.SetSizer(sizer)
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def GetNumberCols(self):
        """Return the number of columns in the grid"""
        return 3
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def GetAttr(self, row, col, someExtraParameter ):
        if col != 2:
            attr = wx.grid.wxGridCellAttr()
            attr.SetReadOnly( 1 )
            return attr
        return None
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def __init__(self, mails, main_tab):
        wx.grid.PyGridTableBase.__init__(self)
        self.mails = mails
        self.main_tab = main_tab
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def GetNumberCols(self):
        """Return the number of columns in the grid"""
        return 6
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def GetAttr(self, row, col, someExtraParameter ):
        attr = wx.grid.GridCellAttr()
        attr.SetReadOnly(True)
        return attr
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def __init__(self, parent, main_tab):
        wx.Panel.__init__(self, parent)
        self.Bind(custom_events.EVT_MAIL_EVENT, self.onMailEvent)
        self.grid = wx.grid.Grid(self, wx.ID_ANY, size=(-1,-1))
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.grid, 0, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.sizer.Fit(self)
        self.main_tab = main_tab
        self.grid.Bind(wx.EVT_KEY_DOWN, self.onKeyDown)
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def copy(self):
        if self.grid.GetSelectionBlockTopLeft() == []:
            rows = 1
            cols = 1
            iscell = True
        else:
            rows = self.grid.GetSelectionBlockBottomRight()[0][0] - self.grid.GetSelectionBlockTopLeft()[0][0] + 1
            cols = self.grid.GetSelectionBlockBottomRight()[0][1] - self.grid.GetSelectionBlockTopLeft()[0][1] + 1
            iscell = False
        # data variable contain text that must be set in the clipboard
        data = ''
        # For each cell in selected range append the cell value in the data variable
        # Tabs '\t' for cols and '\r' for rows
        for r in range(rows):
            for c in range(cols):
                if iscell:
                    data += str(self.grid.GetCellValue(self.grid.GetGridCursorRow() + r, self.grid.GetGridCursorCol() + c))
                else:
                    data += str(self.grid.GetCellValue(self.grid.GetSelectionBlockTopLeft()[0][0] + r, self.grid.GetSelectionBlockTopLeft()[0][1] + c))
                if c < cols - 1:
                    data += '\t'
            data += '\n'
        # Create text data object
        clipboard = wx.TextDataObject()
        # Set data object value
        clipboard.SetText(data)
        # Put the data in the clipboard
        if wx.TheClipboard.Open():
            wx.TheClipboard.SetData(clipboard)
            wx.TheClipboard.Close()
        else:
            wx.MessageBox("Can't open the clipboard", "Error")
项目:padherder_proxy    作者:jgoldshlag    | 项目源码 | 文件源码
def onMailEvent(self,event):
        mails = event.mails
        self.grid_table = MailGridTable(mails, self.main_tab)
        self.grid.SetTable(self.grid_table)
        self.grid.AutoSize()
        self.grid.SetRowLabelSize(40)
        self.Layout()
        event.Skip()
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def DeleteCols(self, pos=0, numCols=1):
        if pos >= self.N_COLS:
            i = pos - self.N_COLS
            for j in range(numCols)[::-1]:
                self._OM.remove(self.propmap.pop(i + j))

            self.GetView().BeginBatch()
            msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, pos, numCols)
            self.GetView().ProcessTableMessage(msg)
            self.GetView().EndBatch()

            return True
        else:
            return False
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def AppendRows(self, numRows=1):
        part = self._OM.new('part')
        part.defaultdata = np.nan
        self._OM.add(part, self.partitionuid)
        self.partmap.append(part.uid)
        color = self.get_color(0)
        self.set_color(-1,color)

        self.GetView().BeginBatch()
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, numRows)
        self.GetView().ProcessTableMessage(msg)
        self.GetView().EndBatch()

        return True
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def DeleteRows(self, pos=0, numRows=1):
        if pos >= self.N_ROWS:
            i = pos - self.N_ROWS
            for j in range(numRows)[::-1]:
                self._OM.remove(self.partmap.pop(i + j))

            self.GetView().BeginBatch()
            msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, pos, numRows)
            self.GetView().ProcessTableMessage(msg)
            self.GetView().EndBatch()

            return True
        else:
            return False
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def on_add(self, event):
        dlg = PropertyEntryDialog(self)
        if dlg.ShowModal() == wx.ID_OK:
            name, unit = dlg.get_value()
            label = name + NAME_UNIT_SEPARATOR + unit
            n = self.grid.GetNumberCols()

            self.grid.AppendCols()
            self.grid.SetColLabelValue(n, label)

            self.grid.ForceRefresh()
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def on_add_part(self, event):
#        to_remove = self.grid.GetSelectedRows()
#        to_add = self.grid.GetSelectedRows()
#        self.grid.ClearSelection()
        self.grid.AppendRows()
#        self.grid.SetFocus()
#        self.grid.SelectedRows()
        self.grid.ForceRefresh()
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def on_remove_part(self, event):
#        to_remove = self.grid.GetSelectedCols()
        to_remove = self.grid.GetSelectedRows()
        self.grid.ClearSelection()
        for i in to_remove[::-1]:
            self.grid.DeleteRows(i)

        self.grid.ForceRefresh()
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def on_remove(self, event):
        to_remove = self.grid.GetSelectedCols()
        self.grid.ClearSelection()
        for i in to_remove[::-1]:
            self.grid.DeleteCols(i)

        self.grid.ForceRefresh()
项目:GRIPy    作者:giruenf    | 项目源码 | 文件源码
def DeleteRows(self, pos=0, numRows=1):
        if pos >= self.N_ROWS:
            i = pos - self.N_ROWS
            for j in range(numRows)[::-1]:
                self._OM.remove(self.rocktypemap.pop(i + j))

            self.GetView().BeginBatch()
            msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, pos, numRows)
            self.GetView().ProcessTableMessage(msg)
            self.GetView().EndBatch()

            return True
        else:
            return False