Поскольку вы сказали, что вывод выглядит нормально в других редакторах, я предполагаю, что проблема заключается в том, что шрифт использует переменную ширину пикселей для символов (например, если широкий символ, такой как «w», имеет ширину 15 пикселей, то более тонкий символ, такой как «i», может быть только 10 пикселей). В шрифте фиксированной ширины (иногда называемом моноширинным шрифтом или текстовым шрифтом для пишущей машинки) все символы имеют одинаковую ширину.
Вы можете увидеть доказательства этого на снимке экрана; есть небольшой дополнительный отступ во второй строке прямо перед частью ".(." Кажется, что символ пробела намного тоньше, чем цифры, поэтому из-за всех этих отсутствующих пикселей третий "столбец" нижней строки выглядит слишком далеко влево (в то время как дополнительная ширина во втором ряду немного сдвигает его вправо)
Вам нужно найти такой шрифт, который возвращает IsFixedWidth() True
затем настройте STC на использование этого шрифта. Обычно вы устанавливаете это с помощью SetFont(). метод, но я случайно знаю, что НТК предпочитают использовать собственные методы. Я нашел этот метод StyleSetFont(), который специфичен к STC, так что это, вероятно, лучшая ставка.
Что касается выбора шрифта, здесь — хороший учебник о том, как работают шрифты в wxpython. Автор действительно здесь активный участник. В частности, поищите в этой статье его пример "виджета wx.FontEnumerator". Это должно позволить вам найти шрифты фиксированной ширины и просмотреть их, чтобы увидеть, нравятся ли они вам. Для быстрого и грязного решения это сообщение на форуме рассказывает о флаге wx.TELETYPE
, гарантирующем фиксированную ширину, и этих примерах кода должен дать вам некоторое представление о том, как его использовать.
Удачи!
----EDIT----
Я не очень хорошо знаком с STC, но я помню из предыдущий ответ Я дал вопрос, связанный с STC, который вам может понадобиться вызвать StyleClearAll()
после установки шрифта. См. раздел EDIT этого ответа для получения дополнительной информации о том, почему это может потребоваться.
person
acattle
schedule
07.08.2012