как я могу прокручивать текст на метке Python tk/tinker?

Я пытаюсь добавить простой вывод журнала в окно/кадр tk.

До сих пор я только нашел, как (легко) добавить вертикальную полосу прокрутки на canvas, списки записей и text (который является полноценным текстовым редактором и не имеет поддержки ссылок textvariable)

Label не может быть присоединен к scrollbar (легко), потому что ему не хватает атрибута yview.

#my naive attempt:...
self.lbl_log = tk.Label(self, width=80, height=10, textvariable=self.string_log)
self.lbl_log.pack(side="top")
self.vsb = tk.Scrollbar(self, orient="vertical", command=self.lbl_log.yview)
self.lbl_log.configure(yscrollcommand=self.vsb.set)

AttributeError: объект «Ярлык» не имеет атрибута «yview»

есть ли простой и удобный способ прокручивать виджет метки с несколькими строками в python tk? Мне не обязательно использовать Label, мне он просто нравится, потому что он прост и textvariable удобен), поэтому я открыт для альтернативных виджетов для этой проблемы.


person gcb    schedule 01.07.2015    source источник
comment
Это просто то, что написано на жестяной банке: Label объекты не имеют yview и поэтому не могут быть прокручены. Вам придется кое-что придумать вместе с прокручиваемыми виджетами. Имейте в виду, что Label не предназначен для отображения чего-то большего, чем метка — Message больше подходит для больших блоков текста. Если он настолько большой, что его нужно прокручивать, попробуйте объект Text (вы можете отключить его, чтобы предотвратить изменение, если хотите).   -  person TigerhawkT3    schedule 02.07.2015
comment
Вы можете сделать перенос текста самостоятельно. Просто возьмите символ с начала строки и поместите его в конец строки и снова установите текст. Побочным эффектом может быть то, что он будет работать быстрее или медленнее из-за разницы в ширине символов. Это должно работать, хотя.   -  person Paul Rooney    schedule 02.07.2015
comment
Взламывание эмулируемой полосы прокрутки для встраивания в программу неподходящего виджета вызовет боль. Я настоятельно рекомендую использовать виджет Text, как мы с @Bryan предлагаем, поскольку он предназначен для больших блоков текста и совместим с Scrollbar.   -  person TigerhawkT3    schedule 02.07.2015
comment
То есть абсолютно никакой комбинации легкой прокрутки + контента из переменной?   -  person gcb    schedule 02.07.2015


Ответы (1)


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

person Bryan Oakley    schedule 02.07.2015