Как создать диалоговое окно шрифта в tkinter?

#python #tkinter

#python #tkinter

Вопрос:

Мне нужна помощь в создании диалогового окна шрифта в tkinter.

Вот мой код на данный момент:

 from tkinter import *

root = Tk()
root.geometry("600x600")

def fontDialog():
    root2 = Toplevel(root)
    root2.geometry("300x300")
    root2.mainloop

button = Button(root, text="font dialog", command=fontDialog)

root.mainloop

  

Итак, в def FontDialog я создал экран. Я не знаю, как создать диалоговое окно шрифта, которое изменяет семейство шрифтов и размер. Если вы это сделаете, пожалуйста, помогите.

Комментарии:

1. StackOverflow не является бесплатным сервисом для кодирования. «Пожалуйста, основывайтесь на этом» — неправильный вопрос. Кроме того, этот вопрос не показывает абсолютно никаких признаков того, что вы провели какое-либо исследование, прежде чем задавать вопрос.

Ответ №1:

Средство выбора шрифта очень просто создать. Все , что вы действительно делаете , это запускаете цикл font.families() и insert возвращаете каждую итерацию в Listbox . Оттуда вы просто указываете ему изменить family постоянную ссылку на шрифт на то, что выбрано в Listbox при Listbox нажатии. Шрифт изменится для всего, к font параметру чего применена постоянная ссылка на шрифт.

 import tkinter as tk
from tkinter import font


class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        #persistent font reference
        textfont = font.Font(family='arial', size='14')
        
        #something to type in ~ uses the persistent font reference
        tk.Text(self, font=textfont).grid(row=0, column=0, sticky='nswe')
        
        #make the textfield fill all available space
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        
        #font chooser
        fc = tk.Listbox(self)
        fc.grid(row=0, column=1, sticky='nswe')

        #insert all the fonts
        for f in font.families():
            fc.insert('end', f)

        #switch textfont family on release
        fc.bind('<ButtonRelease-1>', lambda e: textfont.config(family=fc.get(fc.curselection())))
        
        #scrollbar ~ you can actually just use the mousewheel to scroll
        vsb = tk.Scrollbar(self)
        vsb.grid(row=0, column=2, sticky='ns')
        
        #connect the scrollbar and font chooser
        fc.configure(yscrollcommand=vsb.set)
        vsb.configure(command=fc.yview)


if __name__ == "__main__":
    app = App()
    app.title('Font Chooser Example')
    app.geometry(f'800x600 200 200')
    app.mainloop()
    
    
  

Комментарии:

1. @Skcoder — ваш вопрос заставил меня задуматься, как это сделать, поэтому я сел и хэшировал его примерно за 10 минут. Единственное, что меня немного озадачило, это то, как обрабатывать переключение семейства шрифтов, но сохранять размер, вес и наклон. Быстрый просмотр документов помог мне понять, что я могу создать одну постоянную ссылку. Оттуда это был полный торт. Короче говоря, я тоже не знал, как сделать выбор шрифта, но я знал, как это выяснить.