Правя просто приложение с помощта на Perl Tkx и позволявам на потребителя да избере директория. Вместо да използвам обвиване на текст или разтягане на полето до нелепа дължина, за да покажа цялото име на директорията, ако името е твърде дълго, бих искал да го съкратя и да добавя "..." към края.
Проблемът е, че ширината на етикета е определена като произволна стойност (като 40). Ако тази стойност беше мярка за това колко знака може да побере етикетът, можех просто да съкратя низа до 37 и да добавя "...", но това не изглежда да е така.
Някой знае ли какво всъщност е измерването на -width
на етикет, използващ Perl Tkx? Как мога да намеря количеството -width
единици, които моят низ ще заеме, за да мога да разбера къде е подходящата точка за съкращаването му?
РЕДАКТИРАНЕ:
Намерих този отговор в tcl ръководство:
Клас на базата данни: Ширина Указва желана ширина за етикета. Ако изображение или растерно изображение се показва в етикета, тогава стойността е в екранни единици (т.е. всяка от формите, приемливи за Tk_GetPixels); за текст е в знаци.
Ако тази опция не е зададена, желаната ширина на етикета се изчислява от размера на изображението, растерното изображение или текста, които се показват в него.
Това трябва да означава, че за ширина от 40, за да съкратя текста, трябва просто да съкратя низа до 37 знака и да добавя "...".
Тествах това, като попълних етикета с всички "M". Използвах буквата „M“, защото обикновено е най-широкият знак (вижте тук). Написах код за съкращаване на 37 "M" и добавяне на "..." към края, но "M" изглежда преливат след края на етикета след около 24 "M".
Това означава, че не е безопасно да се предположи, че той просто разтяга етикета, за да пасне на 40 от най-широкия знак... следователно въпросът ми все още е без отговор.
Как мога да определя „ширината“ на моя низ, за да мога да го съкратя по подходящ начин?
РЕДАКТИРАНЕ 2:
Намерих решение, но все още не е решението, което търсех. Ако промените текста на етикета на шрифт с фиксирана ширина, той ще работи правилно. Въпреки това не изглежда толкова добре, така че наистина бих искал решение, което работи за шрифтове без фиксирана ширина.