Создание пользовательского интерфейса с помощью Tkinter. При попытке настроить шрифт текста моей кнопки и я запускаю программу, я получаю эту ошибку обратно

#python #python-3.x #tkinter #fonts

#python #python-3.x #tkinter #шрифты

Вопрос:

Это код, который я написал до сих пор…

 import tkinter as tk
import sys
import tkinter.font as font
from tkinter.ttk import *

app = tk.Tk()
app.geometry("400x400")
app.configure(bg='gray')


photo = tk.PhotoImage(file=r"C:exex_button_active.png")
myFont = font.Font(family='Helvetica', size=20, weight='bold')

tk.Label(app, text='ex', bg='gray', font=(
    'Verdana', 15)).pack(side=tk.TOP, pady=10)
app.iconbitmap(r'C:exex_icon.ico')

ex_activation_button = tk.Button(app,
                                    bg='black',
                                    image=photo,
                                    width=100,
                                    height=100)
ex_stop_button = tk.Button(app,
                              bg='Gray',
                              text='Stop',
                              width=15,
                              height=5)
tk.Button['font'] = myFont

app.title("ex")
ex_activation_button.pack(side=tk.TOP)
ex_stop_button.pack(side=tk.LEFT)

app.mainloop()
  

Я получаю эту ошибку обратно…

 tk.Button['font'] = myFont
TypeError: 'type' object does not support item assignment
  

Это действительно простое изменение шрифта текста на кнопке. Любая помощь с благодарностью!

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

1. ex_stop_button['font'] = myFont ?

2. Черт возьми! Это сработало! Спасибо!

Ответ №1:

tk.Button это тип, например, int or float и т.д. Вы получили бы точно такую же ошибку, если бы сделали int['font'] = myFont .

Вместо этого то, что вы хотите сделать, это установить шрифт на экземпляре tk.Button . В вашем случае это было бы ex_stop_button :

 ex_stop_button['font'] = myFont
  

-или-

 ex_stop_button = tk.Button(app,
                           bg='Gray',
                           text='Stop',
                           width=15,
                           height=5,
                           font=myFont)