我有一个wx.grid表,当我将鼠标悬停在一个单元格上时,我想设置一个工具提示,我在下面尝试了Mike Driscoll的推荐,它可以工作,但是我不能用鼠标拖动选择多个单元格,它允许我只选择最多1个单元格,请帮助:
self.grid_area.GetGridWindow().Bind(wx.EVT_MOTION, self.onMouseOver) def onMouseOver(self, event): ''' Method to calculate where the mouse is pointing and then set the tooltip dynamically. ''' # Use CalcUnscrolledPosition() to get the mouse position # within the # entire grid including what's offscreen x, y = self.grid_area.CalcUnscrolledPosition(event.GetX(),event.GetY()) coords = self.grid_area.XYToCell(x, y) # you only need these if you need the value in the cell row = coords[0] col = coords[1] if self.grid_area.GetCellValue(row, col): if self.grid_area.GetCellValue(row, col) == "ABC": event.GetEventObject().SetToolTipString("Code is abc") elif self.grid_area.GetCellValue(row, col) == "XYZ": event.GetEventObject().SetToolTipString("code is xyz") else: event.GetEventObject().SetToolTipString("Unknown code")
alwbtc.. 5
好的,我找到了解决方案,我必须跳过这个事件:
def onMouseOver(self, event): ''' Method to calculate where the mouse is pointing and then set the tooltip dynamically. ''' # Use CalcUnscrolledPosition() to get the mouse position # within the # entire grid including what's offscreen x, y = self.grid_area.CalcUnscrolledPosition(event.GetX(),event.GetY()) coords = self.grid_area.XYToCell(x, y) # you only need these if you need the value in the cell row = coords[0] col = coords[1] if self.grid_area.GetCellValue(row, col): if self.grid_area.GetCellValue(row, col) == "ABC": event.GetEventObject().SetToolTipString("Code is abc") elif self.grid_area.GetCellValue(row, col) == "XYZ": event.GetEventObject().SetToolTipString("code is xyz") else: event.GetEventObject().SetToolTipString("Unknown code") event.Skip()
最诚挚的问候
好的,我找到了解决方案,我必须跳过这个事件:
def onMouseOver(self, event): ''' Method to calculate where the mouse is pointing and then set the tooltip dynamically. ''' # Use CalcUnscrolledPosition() to get the mouse position # within the # entire grid including what's offscreen x, y = self.grid_area.CalcUnscrolledPosition(event.GetX(),event.GetY()) coords = self.grid_area.XYToCell(x, y) # you only need these if you need the value in the cell row = coords[0] col = coords[1] if self.grid_area.GetCellValue(row, col): if self.grid_area.GetCellValue(row, col) == "ABC": event.GetEventObject().SetToolTipString("Code is abc") elif self.grid_area.GetCellValue(row, col) == "XYZ": event.GetEventObject().SetToolTipString("code is xyz") else: event.GetEventObject().SetToolTipString("Unknown code") event.Skip()
最诚挚的问候