#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 минут. Единственное, что меня немного озадачило, это то, как обрабатывать переключение семейства шрифтов, но сохранять размер, вес и наклон. Быстрый просмотр документов помог мне понять, что я могу создать одну постоянную ссылку. Оттуда это был полный торт. Короче говоря, я тоже не знал, как сделать выбор шрифта, но я знал, как это выяснить.