Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31

Как изменить (восстановить) шрифт по умолчанию в Tkinter?

04.10.2024, 14:25. Показов 1162. Ответов 1

Студворк — интернет-сервис помощи студентам
Как изменить (восстановить) шрифт по умолчанию в Tkinter?

Здравствуйте, господа!
Начал юзать Tkinter и столкнулся с именованными шрифтами (TkDefaultFont, TkTextFont и т.д) и сразу же с проблема (вернее ВОПРОС) — Как правильно изменить и потом восстановить TkDefaultFont?
В интернете советуют при изменении:

Python
1
2
default_font = tkFont.nametofont("TkDefaultFont")
default_font.config(size=14)
и это работает. А как потом, восстановить? Неужели единственный способ:

Python
1
default_font.config(size=9)
Это тоже работает, но если я вначале поменял все параметры шрифта (default_font.config(family='La Medusa', size=15, weight='bold',underline=1)
то вернуть его обратно трудоемко и как-то не по «питоновски», наверное есть способ сохранить параметры TkDefaultFont, а потом их вернуть назад. Как сохранить я знаю:

Python
1
2
default_font = tkFont.nametofont("TkDefaultFont")
default_font_return = defaultFont.copy()
Но, как «подбросить» его назад НЕТ!

Ниже привожу пример, чтобы более связано объяснить чего я хочу:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import tkinter as tk
import tkinter.font as tkFont
root = tk.Tk()
 
def changeFont():# Меняю шрифт по умолчанию, по совету интернета.
    default_font.config(family='La Medusa', size=15, weight='bold',underline=1)
    label1['text']=f'Шрифт по умолчанию: {str(tkFont.nametofont(label1["font"]).actual())[1:][:-1]}' # Обновление "label1"
 
def returnFont():  # Здесь мой вопрос!!!
    default_font.config(family='Segoe UI', size= 9, weight= 'normal', slant= 'roman', underline= 0, overstrike= 0) # Работает, но как бы сюда «подбросить» default_font_return = defaultFont.copy()
    label1['text']=f'Шрифт по умолчанию: {str(tkFont.nametofont(label1["font"]).actual())[1:][:-1]}' # Обновление "label1"
 
 
default_font = tkFont.nametofont("TkDefaultFont")
default_font_return = default_font.copy()
print(f'Параметры шрифта, который нужно потом восстановить: {str(default_font_return.actual())[1:][:-1]}')
 
my_font = tkFont.Font(family='La Medusa', size=15, weight='bold',underline=1, name='mf') # Просто мой шрифт, для "button2". У кого нет 'La Medusa', можно поменять на любой другой
 
label1=tk.Label()
label1['text']=f'Шрифт по умолчанию: {str(tkFont.nametofont(label1["font"]).actual())[1:][:-1]}'
label1.pack()
button1= tk.Button(text='Изменить шрифт по умолчанию', command=changeFont) 
button1.pack(pady=10)
button2= tk.Button(text='Восстановить шрифт по умолчанию', command=returnFont, font=my_font) 
button2.pack()
root.mainloop()
И на закуску, кто знает как использовать параметр эффективно использовать параметр name в классе Font? Если можно пример.
У кого, какие мысли? Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2024, 14:25
Ответы с готовыми решениями:

Как восстановить шрифт?
Подскажыте или посоветуйте как востановить шрифт. Собсно в чом трабл повредился токо шрифт самого windows. В прогах шрифт работает токо...

Как сделать шрифт текста по умолчанию?
Создаю без волшебника элементы (кнопки, ListBox и.т.д), но шрифт у них большой и жирный . Как задать шрифт по умолчанию, как в программе?

Как восстановить прежний шрифт на Winows 7 на весь компьютер
Я забыл какой у меня был шрифт, как восстановить мой прежний шрифт на Winows 7 на весь компьютер ? Объясните подробнее, заранее СПАСИБО!!!

1
1 / 1 / 0
Регистрация: 13.11.2024
Сообщений: 1
13.11.2024, 13:26
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import tkinter
import tkinter.font as tkFont
 
font_change = False
 
def click_button(event):
    global font_change
    
    if font_change:
        default_font.configure(**default_font_return) # возвращаем параметры
        font_change = False
    else:
        default_font.configure(family='La Medusa', size=15, weight='bold',underline=1) #меняем параметры шрифта по умолчанию
        font_change = True
 
window = tkinter.Tk()
 
default_font = tkFont.nametofont("TkDefaultFont")
default_font_return = default_font.configure() # получаем словарь с параметрами
print(default_font_return) # смотрим словарь с параметрами
 
button = tkinter.Button(text='Кнопочка')
button.pack()
 
button.bind('<Button-1>', click_button)
 
window.mainloop()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2024, 13:26
Помогаю со студенческими работами здесь

Как задать шрифт по умолчанию для всех компонентов
В общем загрузив шрифт мне нужно задать его по умолчанию. И как узнать какой шрифт по умолчанию используется для вновь созданных...

Как установить определенный шрифт по-умолчанию для Заголовка
Добрый день. Как установить определенный шрифт по-умолчанию для Заголовка ? Сейчас шрифт заголовков - &quot;Cambria 16...

Панель "Безопасность Windows" по умолчанию предлагает использовать другую уч. запись, как изменить вариант по умолчанию?
Добрый день. Панель Безопасность Windows, которая вылазит, например при просмотре сохраненных паролей в Google Chrome, по умолчанию...

Изменить шрифт(с Arial на TimesNewRoman и др.) сохранив шрифт жирным, курсивным и пр. в richTextBox
добрый день, форумчане !) Столкнулся с проблемой..не знаю, как можно изменить шрифт с Arial, например, на TimesNewRoman таким образом,...

Как добавить сторонний шрифт и установить его по умолчанию для всех компонентов
на андроид написано как сменить а как на винде не понятно прошу помощи ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru