videxerion Asked:2023-06-25 23:59:09 +0000 UTC2023-06-25 23:59:09 +0000 UTC 2023-06-25 23:59:09 +0000 UTC 如何限制wxpython表中的列拉伸 772 我有一个这样的表: # Создаем таблицу grid = wx.grid.Grid(panel) grid.CreateGrid(0, 2) # 5 строк, 2 столбца grid.SetColLabelValue(0, "IP") grid.SetColLabelValue(1, "BANNER") grid.AutoSizeColumns() 我需要这样做,以便用户不能无限期地拉伸列的宽度,如下所示: 我该怎么做? python 1 个回答 Voted Best Answer Сергей Кох 2023-06-28T02:41:49Z2023-06-28T02:41:49Z 列大小拉伸受屏幕宽度限制。我发现这个尺寸在活动中的位置 EVT_GRID_CMD_COL_SIZE:用户根据wxEVT_GRID_COL_SIZE事件类型更改了列大小, 使用event.EventObject.ClassInfo.Size,但我没有找到如何更改它或如何在动态中捕获此事件。因此,我只是将强烈拉伸的柱的大小恢复为所需的大小。 import wx import wx.grid class MyForm(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="A Simple grid") self.panel = wx.Panel(self) self.grid = wx.grid.Grid(self.panel) self.grid.CreateGrid(5, 2) self.grid.SetColLabelValue(0, "IP") self.grid.SetColLabelValue(1, "BANNER") self.grid.AutoSizeColumns() self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.grid, 1, wx.EXPAND) self.panel.SetSizer(self.sizer) # Ловим событие пользователь изменил размер столбца self.grid.Bind(wx.grid.EVT_GRID_CMD_COL_SIZE, self.col_size) def col_size(self, event): print(event.EventObject.ClassInfo.Size) # Определяем в каком столбце произошло событие. col = event.RowOrCol # Находим ширину таблицы. width_grid = self.grid.GetSize()[0] # Возвращаем размер столбца до необходимого размера, я взял половину ширины таблицы. self.grid.SetColSize(col, min(width_grid // 2, self.grid.GetColSize(col))) # Возвращаем ячейку в видимую часть окна. self.grid.MakeCellVisible(0, col) event.Skip() if __name__ == "__main__": app = wx.App() frame = MyForm().Show() app.MainLoop()
列大小拉伸受屏幕宽度限制。我发现这个尺寸在活动中的位置
使用
event.EventObject.ClassInfo.Size,但我没有找到如何更改它或如何在动态中捕获此事件。因此,我只是将强烈拉伸的柱的大小恢复为所需的大小。