如何设置和维持最小宽度?
题
我使用一些适.ListCtrl类在w.LC_REPORT模式,增强与ListCtrlAutoWidthMixin.
问题是:当用户双击列分(自动调整列),列宽度设定的宽度相匹配内容。这是通过适库和调整列只是些素当的控制是空的。
我试着打电话给
自我。SetColumnWidth(colNumber,w.LIST_AUTOSIZE_USEHEADER)
同时创建的清单,但它只是将最初列宽,不是所允许的最小宽度。
任何人都成功地设置列最小宽度?
编辑:试图捕捉
wx.EVT_LEFT_DCLICK
没有成功。这个事件不时产生的用户双击栏分隔。还尝试
wx.EVT_LIST_COL_END_DRAG
这一事件产生,通常两次,为双击,但我怎么没看到我可以检索有关新的大小,或者如何区分双击从拖放。任何人都有一些其他想法吗?
解决方案 2
确定之后,一些斗争中,我得到了工作方法。这是丑陋的从设计的角度来看,但工作以及对我来说足够。
这就是它是如何工作:
储存最初的宽度的柱。
self.SetColumnWidth(colNum, wx.LIST_AUTOSIZE_USEHEADER) self.__columnWidth[colNum] = self.GetColumnWidth(c)
注册处理程序更新UI事件。
wx.EVT_UPDATE_UI(self, self.GetId(), self.onUpdateUI)
并写信的处理程序功能。
def onUpdateUI(self, evt): for colNum in xrange(0, self.GetColumnCount()-1): if self.GetColumnWidth(colNum) < self.__columnWidth[colNum]: self.SetColumnWidth(colNum, self.__columnWidth[colNum]) evt.Skip()
的 自我。GetColumnCount()-1 是故意的,所以最后一栏是不调整。我知道这不是一个优雅的解决方案,但它工作得很好,对我来说-你不能让列太小,通过双击频器(实际上-你不能这样做的所有)和双击器之后,最后一列调整的最后一栏,以适合列控制的宽度。
仍然,如果有人知道更好的解决方案,请它张贴。
其他提示
老实说,我已经使用本机wx.ListCtrl赞成使用 ObjectListView 停止。有一个学习曲线的一点点,但也有很多例子。 这将有兴趣你的问题。
不隶属于 StackOverflow