Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import wx
- import wx.grid
- import ar_query
- EVEN_ROW_COLOUR = "#CCE6FF"
- GRID_LINE_COLOUR = "#ccc"
- # Объявление DataTable для привязки к wx.grid
- class DataTable(wx.grid.GridTableBase):
- def __init__(self, data=None):
- wx.grid.GridTableBase.__init__(self)
- self.headerRows = 1
- if data is None:
- data = pd.DataFrame()
- self.data = data
- def GetNumberRows(self):
- return len(self.data)
- def GetNumberCols(self):
- return len(self.data.columns) + 1
- def GetValue(self, row, col):
- if col == 0:
- return self.data.index[row]
- return self.data.iloc[row, col - 1]
- def SetValue(self, row, col, value):
- self.data.iloc[row, col - 1] = value
- def GetColLabelValue(self, col):
- if col == 0:
- if self.data.index.name is None:
- return "Index"
- else:
- return self.data.index.name
- return str(self.data.columns[col - 1])
- def GetTypeName(self, row, col):
- return wx.grid.GRID_VALUE_STRING
- def GetAttr(self, row, col, prop):
- attr = wx.grid.GridCellAttr()
- if row % 2 == 1:
- attr.SetBackgroundColour(EVEN_ROW_COLOUR)
- return attr
- class MyFrame(wx.Frame):
- """
- Главное окно
- """
- def __init__(self):
- """Конструктор"""
- wx.Frame.__init__(self, None, wx.ID_ANY, title="Имя окна")
- self._init_gui()
- self.Layout()
- self.Show()
- def _init_gui(self):
- df: pd.DataFrame = ar_query.get_from_db()
- table = DataTable(df)
- # Объявляем сетку и назначаем таблицу данных для нее
- grid = wx.grid.Grid(self, -1)
- grid.SetTable(table, takeOwnership=True)
- grid.AutoSizeColumns()
- # Menu Bar
- self.frame_menubar = wx.MenuBar()
- wxglade_tmp_menu = wx.Menu()
- self.frame_menubar.Append(wxglade_tmp_menu, "Файл")
- wxglade_tmp_menu = wx.Menu()
- self.frame_menubar.Append(wxglade_tmp_menu, "Справка")
- self.SetMenuBar(self.frame_menubar)
- # Menu Bar end
- # Tool Bar
- self.frame_toolbar = wx.ToolBar(self, -1)
- self.frame_toolbar.AddTool(
- wx.ID_ANY,
- "Новый ИД",
- wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_TOOLBAR, (24, 24)),
- wx.NullBitmap,
- wx.ITEM_NORMAL,
- "",
- "",
- )
- self.SetToolBar(self.frame_toolbar)
- self.frame_toolbar.Realize()
- # Tool Bar end
- self.mainPanel = wx.Panel(self, wx.ID_ANY)
- mainSizer = wx.BoxSizer(wx.VERTICAL)
- sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
- mainSizer.Add((0, 0), 0, 0, 0)
- sizer_1.Add(grid, 0, wx.EXPAND)
- # Добавляем кнопки, и переопределяем методы если нужно
- cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel")
- self.Bind(wx.EVT_BUTTON, self.OnCancel, cancelButton)
- proceedButton = wx.Button(self, wx.ID_OK, "Proceed")
- self.Bind(wx.EVT_BUTTON, self.OnProceed, proceedButton)
- sizerbtns = wx.BoxSizer(wx.HORIZONTAL)
- sizerbtns.Add(cancelButton, 0, wx.CENTER)
- sizerbtns.Add(proceedButton, 0, wx.CENTER)
- mainSizer.Add(sizer_1, 0, wx.ALL, 5)
- mainSizer.Add(sizerbtns, 0, wx.CENTER)
- sizer_1.SetSizeHints(self)
- self.SetSizerAndFit(mainSizer)
- self.Bind(wx.EVT_CLOSE, self.exit)
- def exit(self, event):
- self.Destroy()
- def OnCancel(self, event):
- self.Destroy()
- def OnProceed(self, event):
- self.Destroy()
- class MyMenuBar(wx.MenuBar):
- def __init__(self, *args, **kwds):
- # begin wxGlade: MyMenuBar.__init__
- wx.MenuBar.__init__(self, *args, **kwds)
- wxglasde_tmp_menu = wx.Menu()
- self.Append(wxglade_tmp_menu, "Файл")
- wxglade_tmp_menu = wx.Menu()
- self.Append(wxglade_tmp_menu, "Справка")
- # end wxGlade
- if __name__ == "__main__":
- app = wx.App()
- frame = MyFrame()
- app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment