единицы длины ткинтера это пиксели? - PullRequest
0 голосов
/ 19 марта 2019

Re: wrapplength для tkinter.Label, из документации NM Tech Джона Шипмана: «Вы можете ограничить количество символов в каждой строке, установив для этой опции желаемое число. Значение по умолчанию 0 означает, что строки будут быть сломанным только в новых строках ". Другие источники согласны с тем, что единицы измерения длины - это символы.

Код ниже, кажется, ломает линию, как если бы единицы длины были пикселями, а не символами. Например, если я установлю значение W-длины на 10, метка отобразит столбец текста шириной в один или два символа. Если я установлю значение обёртки равным 20, строки будут состоять из 3 или 4 символов.

В моем приложении пользователь будет создавать свои собственные простые виджеты для пользовательских форм, и было бы лучше, если бы опция обертки использовала количество символов для единиц вместо того, что оно делает. Поскольку документы NMTech предназначены для Tkinter 8.5, но 8.6 - это то, что поставляется с моим Python 3.5, возможно, это объясняет разницу, но я не вижу документов для 8.6.

Но в идеале строки должны переноситься в ближайшем интервале между словами с длиной обтекания, используемой только как максимальная длина строки. Поэтому, если пользователь все равно должен вводить свой собственный \ n, длина обертки мне кажется бесполезной.

Резюме: в графическом интерфейсе для пользователей, которые будут вводить значения параметров для своих собственных простых виджетов, 1) есть ли способ заставить Tkinter принимать символы для единиц длины строки и 2) можно ли заставить разрыв строки в ближайшем пробел за пределами длины строки с длиной обертки, используемой только как максимальная длина строки вместо абсолютной длины строки?

Спасибо за любые решения или предложения.

import tkinter as tk

root = tk.Tk()

sib = tk.Label(root, text='Give em hell Harry', wraplength=10)
sib.grid()

root.mainloop()

1 Ответ

2 голосов
/ 19 марта 2019

Есть ли способ заставить Tkinter принимать символы за единицу длины

Нет, нет.Если вам нужно, чтобы перенос происходил на границах слов, вы можете использовать текстовый виджет, а не метку.

Если не указано иное, единицы измерения представлены в пикселях.Из документации canonical tk :

wraplength Для виджетов, которые могут выполнять перенос слов, эта опция указывает максимальную длину строки.Строки, которые будут превышать эту длину, переносятся на следующую строку, поэтому ни одна строка не длиннее указанной длины.Значение может быть указано в любой из стандартных форм для расстояний экрана.Если это значение меньше или равно 0, перенос не выполняется: строки будут прерываться только в символах новой строки в тексте.

В приведенном выше тексте "любая из стандартных формдля расстояний экрана " относится к тому факту, что вы можете использовать суффикс для указания расстояния в точках принтера (например," 72p "), сантиметрах (например," 2.54c "), миллиметрах (например," 1000m ")или дюймы (например, «1i»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...