web-dev-qa-db-fra.com

Comment changer la police et la taille des boutons et du cadre dans tkinter en utilisant python?

C'est le code que j'ai utilisé pour générer une simple zone de texte et un bouton dans tkinter.

Quels devraient être les paramètres pour mieux voir le cadre et les boutons?

 root = Tk.Tk()

 def submit():
    query = entry.get()
    retrieve(query)
    entry = Tk.Entry(root)
    entry.pack()
    button = Tk.Button(root, text='submit', command=submit)
    button.pack()
    root.mainloop()             
15
Abkb

Tout d'abord, la meilleure référence pour Tkinter est ce site Web de New Mexico Tech . Dans le toc, vous trouverez un section sur les polices , et dans le section sur les widgets de boutons vous trouverez l'option font.

vous devez avoir un objet Tkinter pour créer une police

from Tkinter import *
import tkFont
root = Tk()

créer une police comme l'exemple du site Web de New Mexico Tech

helv36 = tkFont.Font(family='Helvetica', size=36, weight='bold')
# you don't have to use Helvetica or bold, this is just an example

vous pouvez maintenant définir la police du bouton

button['font'] = helv36

La taille du bouton dépendra de votre gestionnaire de géométrie, EG: grid ou pack. Seule la méthode grid est couverte dans la section layouts par le site de New Mexico Tech, mais effbot.org est également une excellente référence et il couvre pack assez bien.

from Tkinter import *
import tkFont
# using grid
# +------+-------------+
# | btn1 |    btn2     |
# +------+------+------+
# | btn3 | btn3 | btn4 |
# +-------------+------+
root = Tk()
# tkFont.BOLD == 'bold'
helv36 = tkFont.Font(family='Helvetica', size=36, weight=tkFont.BOLD)
btn1 = Button(text='btn1', font=helv36)
btn2 = Button(text='btn2', font=helv36)
btn3 = Button(text='btn3', font=helv36)
btn4 = Button(text='btn4', font=helv36)
btn5 = Button(text='btn5', font=helv36)
root.rowconfigure((0,1), weight=1)  # make buttons stretch when
root.columnconfigure((0,2), weight=1)  # when window is resized
btn1.grid(row=0, column=0, columnspan=1, sticky='EWNS')
btn2.grid(row=0, column=1, columnspan=2, sticky='EWNS')
btn3.grid(row=1, column=0, columnspan=1, sticky='EWNS')
btn4.grid(row=1, column=1, columnspan=1, sticky='EWNS')
btn5.grid(row=1, column=2, columnspan=1, sticky='EWNS')

Tkinter Button fonts

Essayez également ttk.

12
Mark Mikofski

tutoriel tkdocs recommande d'utiliser des polices et des styles nommés si vous souhaitez modifier les apparences:

import random
try:
    import tkinter as Tk
    import tkinter.ttk as ttk
    import tkinter.font as font
except ImportError: # Python 2
    import Tkinter as Tk
    import ttk
    import tkFont as font

def change_font_family(query, named_font):
    named_font.configure(family=random.choice(font.families()))

root = parent = Tk.Tk()
root.title("Change font demo")

# standard named font (everything that uses it will change)
font.nametofont('TkDefaultFont').configure(size=5) # tiny

# you can use your own font
MyFont = font.Font(weight='bold')

query = Tk.StringVar()
ttk.Entry(parent, textvariable=query, font=MyFont).grid() # set font directly
ttk.Button(parent, text='Change Font Family',  style='TButton', # or use style
           command=lambda: change_font_family(query, MyFont)).grid()
query.set("The quick brown fox...")

# change font that widgets with 'TButton' style use
root.after(3000, lambda: ttk.Style().configure('TButton', font=MyFont))
# change font size for everything that uses MyFont
root.after(5000, lambda: MyFont.configure(size=48)) # in 5 seconds
root.mainloop()
6
jfs