Форум сайта python.su
Python 3.1.2, Tkinter.
Возникла проблема с темизацией при добавлении ScrolledText. Все контролы у меня из tkinter.ttk, а этот из tkinter.scrolledtext. Проблема в том, что сама полоса прокрутки не подхватывает тему win7, в отличии от других контролов и кнопок. Кто с этим сталкивался, и как решать?
UPD:
Более того. Ведет этот виджет себя довольно странно. При загрузке формы - кнопки полосы прокрутки то черные, то серые, но при этом неактивные. При наборе достаточного количества текста для прокрутки - они не меняют цвет, хотя становятся активными. Баги?
Отредактировано (Дек. 2, 2010 12:25:04)
Офлайн
C прокруткой вообще проблема.
Даже если заменить в scrolledtext виджет скрола на виджет из ttk, через print(s.element_options('My.Vertical.TScrollbar.trough')) параметры видно, но если начинаешь менять, или хочешь получить значение параметра по имени, выдаёт ошибку.
Если вдруг разберёшься, не забудь написать.
Офлайн
GriffonПока на проблему забил, но вернуться к ней придется. Если вопрос решу - напишу обязательно.
Если вдруг разберёшься, не забудь написать.
Офлайн
А если подправить сам ScrolledText, заменив ScrollBar на ttk'шный?
Офлайн
В общем когда я пробовал менять на 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")
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)
Офлайн