将wx.dataview.DataViewListCtrl的列宽度设置为最大内容或标题宽度

问题描述 投票:0回答:2

我尝试设置wx.dataview.DataViewListCtrl。我有多列文字内容。第一列的某些条目比选定的默认宽度宽。他们被切断了。我可以手动设置列宽,但我想自动将其设置为最大内容或标题宽度。有自动的方法吗?如果没有,我该如何计算理想宽度。我在Ubuntu Linux上。使用的后端是gtk。使用wxDataViewListCtrl的C ++答案也可能有所帮助。我可以翻译。

python python-3.x wxpython wxwidgets
2个回答
1
投票

您可以通过编程确定存储在其单元格中的每个文本值的最长大小,来确定列大小,并为该列宽度分配最大的值。

为此,您必须创建一个字体对象:

# Example font:
font = wx.Font(pointSize = 10, family = wx.DEFAULT, style = wx.NORMAL, weight wx.NORMAL, faceName = 'Consolas')

# Get the screen display control and set the font:
dc = wx.ScreenDC()
dc.SetFont(font)

# Gets the width and height of that text with this font:
w,h = dc.GetTextExtent("hello world")

您必须为在该列的单元格中输入的每个文本计算此值,并记住所有这些值中的最大值。完成ListView之后,您将已经有了列大小的参考。


1
投票

您可以将列宽设置为wxCOL_WIDTH_AUTOSIZE(在Python中可能映射到wx.COL_WIDTH_AUTOSIZE以使其适合其现有元素。

© www.soinside.com 2019 - 2024. All rights reserved.