Установите максимальную ширину столбца или ширину заголовка для wx.dataview.DataViewListCtrl - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь настроить wx.dataview.DataViewListCtrl. У меня есть несколько столбцов с текстовым содержимым. Некоторые записи первого столбца шире, чем выбранная ширина по умолчанию. Они отрезаны. Я мог бы установить ширину столбца вручную, но мне нравится автоматически устанавливать максимальный размер содержимого или ширину заголовка. Есть ли автоматизированный способ сделать это? Если нет, как я могу рассчитать идеальную ширину. Я на Ubuntu Linux. Используемым бэкэндом является gtk. Также может помочь ответ C ++ с использованием wxDataViewListCtrl. Я могу перевести это.

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вы можете установить ширину столбца wxCOL_WIDTH_AUTOSIZE (вероятно, сопоставленную с wx.COL_WIDTH_AUTOSIZE в Python), чтобы он соответствовал существующим элементам.

1 голос
/ 13 января 2020

Вы можете определить размер столбца, зная, какой самый длинный размер каждого текстового значения, хранящегося в его ячейках, программно и назначить самое широкое значение этой ширине столбца.

Для этого вы должны создать объект шрифта:

# 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 у вас уже будет ссылка на размер столбца.

...