Форум сайта python.su
Привет!
У меня есть GUI, построенный из 2 виджетов типа tk.Text. Оба виджета одинаковых размеров, только один упакован слева, другой - справа.
В обоих виджетах разные тексты с разным числом символов, но одинаковым числом абзацев. Мне нужно выровнять оба виджета так, чтобы абзацы с одинаковым номером были визуально выровнены по горизонтали. Нужно сделать примерно так, как в сравнивателях текстов, например, kdiff:
Позиции известны, mark установлены. Пробовал разные комбинации с yview - не получилось.
Отредактировано vanvanov (Март 26, 2017 08:16:50)
Офлайн
vanvanovделайте, кто вам мешает?
Мне нужно выровнять оба виджета так, чтобы абзацы с одинаковым номером были визуально выровнены по горизонтали. Нужно сделать примерно так, как в сравнивателях текстов, например, kdiff:
vanvanovСейчас вызовем телепата, он усилем мысли считает ваш код, также прочитет ваши мысли о том какие варианты с yview вы уже пробовали и выложит это все сюда и тогда может ктото чтото и ответит по существу.
Позиции известны, mark установлены. Пробовал разные комбинации с yview - не получилось.
[code python][/code]
Отредактировано PEHDOM (Март 26, 2017 15:20:07)
Офлайн
PEHDOMОтлично, и каким образом?
делайте, кто вам мешает?
PEHDOMИх всего 2, насколько я понял из руководства, yview_scroll и yview_moveto.
о том какие варианты с yview вы уже пробовали
PEHDOMНу, вы сами просили. Клонируйте репозиторий с помощью
А пока исходного кода нет,никто не знает как у вас там все устроено,и как оно у вас работает
git clone git://github.com/sklprogs/shared.git
Отредактировано vanvanov (Март 26, 2017 21:30:21)
Офлайн
vanvanovВам нужно описать алгоритм действий или что?
В обоих виджетах разные тексты с разным числом символов, но одинаковым числом абзацев. Мне нужно выровнять оба виджета так, чтобы абзацы с одинаковым номером были визуально выровнены по горизонтали.
Офлайн
MrViktor
Согласно условию задачи, число абзацев (строк) одинаковое, т.е. надо выровнять тексты по горизонтали с метками, например, ‘10.0’ в 1-м окне и ‘10.0’ в 2-м окне. Проблема в том, что абзацы имеют разную длину.
Я, кажется, стал понимать, в чем дело. yview выводит указанную метку на 1-ю видимую строчку, и оба текста оказываются выровненными. Но если метка находится слишком близко к началу или к концу текста (как на скриншоте), то выровнять не получится, потому что текстовый виджет нельзя скроллить за пределами текста. Соответственно, у меня 2 вопроса:
1) как сделать так, чтобы yview отображал нужную метку по центру, а не в самом вверху?
2) что делать, если метка находится слишком близко к началу или концу? Вставлять пустые строки в начало и конец? Использовать tk.Canvas вместо tk.Text?
Офлайн
vanvanovБрррр…. Так я вам уже про это и написал… абзац и строка - все таки разные вещи.
Согласно условию задачи, число абзацев (строк) одинаковое, т.е. надо выровнять тексты по горизонтали с метками, например, ‘10.0’ в 1-м окне и ‘10.0’ в 2-м окне. Проблема в том, что абзацы имеют разную длину.
Отредактировано MrViktor (Март 27, 2017 11:16:51)
Офлайн
MrViktorУ меня tk.Text, а не tk.Listbox. Строки слишком длинные, чтобы пытаться впихнуть их в Listbox.
если у вас ширина ListBox равна 20 символов, а вы впихиваете текст длинной 100 символов, то текст в листбоксе займет 5 строк. Вот от этого и надо плясать, как я уже и писал разницу в строках компенсировать пустыми строками, сам листбокс этого не сделает.
MrViktorКоторые используются при yview. Например,
И про какие метки вы все говорите?
mark = 'red' postk = '10.0' widget.mark_set(mark,postk) widget.yview(mark)
Отредактировано vanvanov (Март 27, 2017 11:31:02)
Офлайн
пока писал, тема обновилась удалил.
vanvanovВот наконецто хоть какойто конкретный вопрос, и почему мы это должны из вас клещами вытаскивать?
1) как сделать так, чтобы yview отображал нужную метку по центру, а не в самом вверху?
2) что делать, если метка находится слишком близко к началу или концу? Вставлять пустые строки в начало и конец? Использовать tk.Canvas вместо tk.Text?
[code python][/code]
Отредактировано PEHDOM (Март 27, 2017 12:23:30)
Офлайн
vanvanovДа, это я уже глючу (в голове своих проблем вагон), в tk.Text вроде тоже настройка на длину строки имеется
У меня tk.Text, а не tk.Listbox
vanvanovВысчитывать середину tk.Text и скролинг делать с учетом смещения на середину (это что на ум приходит).
1) как сделать так, чтобы yview отображал нужную метку по центру, а не в самом вверху?
Отредактировано MrViktor (Март 27, 2017 12:47:27)
Офлайн
PEHDOMПотому что не была ясна причина, по которой текст нормально не выравнивался. А ответы на конкретные вопросы обычно находятся в поисковике.
Вот наконецто хоть какойто конкретный вопрос, и почему мы это должны из вас клещами вытаскивать?
MrViktorНаверху ссылки есть.
Выложили бы небольшой свой рабочий проект, где можно всю проблему увидеть визуально. Так гораздо быстрее вам помогут.
Офлайн