我使用一些适.ListCtrl类在w.LC_REPORT模式,增强与ListCtrlAutoWidthMixin.

问题是:当用户双击列分(自动调整列),列宽度设定的宽度相匹配内容。这是通过适库和调整列只是些素当的控制是空的。

我试着打电话给

自我。SetColumnWidth(colNumber,w.LIST_AUTOSIZE_USEHEADER)

同时创建的清单,但它只是将最初列宽,不是所允许的最小宽度。

任何人都成功地设置列最小宽度?

编辑:试图捕捉

 wx.EVT_LEFT_DCLICK 

没有成功。这个事件不时产生的用户双击栏分隔。还尝试

wx.EVT_LIST_COL_END_DRAG 

这一事件产生,通常两次,为双击,但我怎么没看到我可以检索有关新的大小,或者如何区分双击从拖放。任何人都有一些其他想法吗?

有帮助吗?

解决方案 2

确定之后,一些斗争中,我得到了工作方法。这是丑陋的从设计的角度来看,但工作以及对我来说足够。

这就是它是如何工作:

  1. 储存最初的宽度的柱。

    self.SetColumnWidth(colNum, wx.LIST_AUTOSIZE_USEHEADER)
    
    self.__columnWidth[colNum] = self.GetColumnWidth(c)
    
  2. 注册处理程序更新UI事件。

    wx.EVT_UPDATE_UI(self, self.GetId(), self.onUpdateUI)
    
  3. 并写信的处理程序功能。

    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 停止。有一个学习曲线的一点点,但也有很多例子。 将有兴趣你的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top