使用wxpython设计GUI界面,需要实现通过鼠标点击grid表格中第一列单元格显示的单号能够自动跳出该单号的信息编辑界面。
百度了好多篇文章,思路来源主要参考以下几篇文章:
如何在wxpython中的wx.grid中右键单击以获取选定范围的值?
wxPython in Action ( 网格(grid)控件7)
代码实现:
# 控制点击单号触发打开相应的单号编辑窗口事件
self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnSelectCell, self.m_grid1)
def OnSelectCell(self, event):
row = event.GetRow()
column = event.GetCol()
if column == 0:
self.m_grid1.SetCellEditor(row, 0, wx.grid.GridCellEditor.GetWindow(self.UpdateUI(4)))
event.Skip()
思路讲解:
创建针对grid单元格的双击鼠标左键触发事件函数OnSelectCell(),并且限制鼠标双击事件的单元格对象只能是grid的第一列,主要使用了grid的SetCellEditor方法实现选中单元格之后打开对应的另外一个界面。
https://docs.wxpython.org/wx.grid.GridCellEditor.html#wx.grid.GridCellEditor
虽然会提示如下报错信息,但是功能是ok的,能够实现鼠标左键双击单号打开相应的编辑界面,报错信息如下:self.m_grid1.SetCellEditor(row, 0, wx.grid.GridCellEditor.GetWindow(self.UpdateUI(4)))
TypeError: GridCellEditor.GetWindow(): first argument of unbound method must have type ‘GridCellEditor’
实现在不同的界面之间跳转主要参考以下文章的代码逻辑:wxPython实现Frame之间的跳转/更新的一种方法
主要参考文章中的guiManager.py设置GuiManager类来管理不同的界面,通过设置type来确定跳转到哪个界面。