Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Как в Tkinter сделать ScrolledText красивым [RSS Feed]

#1 Дек. 2, 2010 12:21:38

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Как в Tkinter сделать ScrolledText красивым

Python 3.1.2, Tkinter.
Возникла проблема с темизацией при добавлении ScrolledText. Все контролы у меня из tkinter.ttk, а этот из tkinter.scrolledtext. Проблема в том, что сама полоса прокрутки не подхватывает тему win7, в отличии от других контролов и кнопок. Кто с этим сталкивался, и как решать?

UPD:
Более того. Ведет этот виджет себя довольно странно. При загрузке формы - кнопки полосы прокрутки то черные, то серые, но при этом неактивные. При наборе достаточного количества текста для прокрутки - они не меняют цвет, хотя становятся активными. Баги?



Отредактировано (Дек. 2, 2010 12:25:04)

Офлайн

#2 Янв. 20, 2011 10:56:48

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Как в Tkinter сделать ScrolledText красивым

C прокруткой вообще проблема.
Даже если заменить в scrolledtext виджет скрола на виджет из ttk, через print(s.element_options('My.Vertical.TScrollbar.trough')) параметры видно, но если начинаешь менять, или хочешь получить значение параметра по имени, выдаёт ошибку.
Если вдруг разберёшься, не забудь написать.



Офлайн

#3 Янв. 20, 2011 11:39:17

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Как в Tkinter сделать ScrolledText красивым

Griffon
Если вдруг разберёшься, не забудь написать.
Пока на проблему забил, но вернуться к ней придется. Если вопрос решу - напишу обязательно.



Офлайн

#4 Янв. 20, 2011 12:14:08

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как в Tkinter сделать ScrolledText красивым

А если подправить сам ScrolledText, заменив ScrollBar на ttk'шный?



Офлайн

#5 Янв. 25, 2011 15:22:05

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Как в Tkinter сделать ScrolledText красивым

В общем когда я пробовал менять на ttk (первый пост), оно не работало так как надо сначала обязательно(!) выбрать Style.theme_use(). Без выбора темы другие виджеты настраиваются, а этот нет.
Для теста изменил ScrolledText.py вот так:

from tkinter import Text, Pack, Grid, Place
from tkinter.ttk import Frame, Style, Scrollbar
from tkinter.constants import RIGHT, LEFT, Y, BOTH


Style().theme_use("default")
Style().layout("Vertical.My.TScrollbar", Style().layout("Vertical.TScrollbar"))
Style().configure("Vertical.My.TScrollbar", background="#9F9", troughcolor="black", arrowcolor="#388", arrowsize=15)
Style().map("Vertical.My.TScrollbar", background=(("disabled", "#CFC"),))

class ScrolledText(Text):
def __init__(self, master=None, **kw):
self.frame = Frame(master)
self.vbar = Scrollbar(self.frame, style="My.TScrollbar")
остальное не менялось.

И всё начало нормально раскрашиваться. Правда поменять фон стрелки отдельно от всего остального не удалось.

upd: Ещё одна важная вещь. Для разных тем существует разное количество параметров, которые можно менять. Например если использовать calm, настроек будет больше (потому что выглядит иначе). Можно посмотреть:
for theme in Style().theme_names():
Style().theme_use(theme)
print(theme)
print(Style().element_options("Vertical.TScrollbar.trough"))
print(Style().element_options("Vertical.TScrollbar.thumb"))
print(Style().element_options("Vertical.TScrollbar.uparrow"), "\n")



Отредактировано (Янв. 25, 2011 15:33:47)

Офлайн

  • Начало
  • » GUI
  • » Как в Tkinter сделать ScrolledText красивым[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version