#python #tkinter
#python #tkinter
Вопрос:
Я хочу изменить размер шрифта в кнопке Tkinter. Но размер кнопки меняется вместе с ним. Я даже пытался ограничить высоту и ширину кнопки, но, похоже, ничего не работает, это код:
from tkinter import *
root = Tk()
root.geometry("500x300")
root.resizable(False, False)
button = Button(root, text="Ihsan", bg="Black", fg="white",
activeforeground="white", activebackground="grey", width=15, height=3,
font=("ariel", "43"))
button.place(x=350, y=20)
root.mainloop()
Я получаю окно с огромной кнопкой. Пожалуйста, помогите
Комментарии:
1. Какой размер вы хотите, чтобы он был? Вы пытаетесь создать кнопку, которая слишком мала, чтобы текст был виден?
2. @BryanOakley Я хочу увеличить текст в кнопке без увеличения размера кнопки.
3. Поскольку вы использовали
place()
, вы можете указать в нем размер в пикселях :button.place(x=350, y=20, width=200, height=50)
.
Ответ №1:
Ширина и высота кнопки в буквах (при отображении текста) или пикселях (при отображении изображения).
Вот один из способов, используя размер изображения, чтобы ограничить размер кнопки при изменении размера шрифта. Не уверен, что это лучший вариант.
import tkinter as tk
from PIL import Image, ImageTk
def new_font():
global setting
setting = 1 - setting
font = f"ariel {32 if setting else 16}"
button.configure(font=font)
setting = 0
root = tk.Tk()
im = Image.new("RGB", (200, 200))
photo = ImageTk.PhotoImage(im)
root.geometry("300x300")
root.resizable(False, False)
button = tk.Button(
root,
text="Ihsan",
bg="Black",
fg="white",
activeforeground="white",
activebackground="grey",
width=200,
height=200,
font=("ariel", "16"),
image=photo,
compound='center')
button.place(x=30, y=20)
size = tk.Button(root, text="Size", command=new_font)
size.place(x=30, y=250)
root.mainloop()
Комментарии:
1. Есть ли способ сделать это без изображения
2. @ihsan: вы можете создать невидимое изображение размером 1×1 пиксель вместе с текстом. Использование пикселя приведет к тому, что размер виджета будет в пикселях, а не в символах.
Ответ №2:
Ширина и высота — это то, что дает вам большую кнопку. Высота в этом случае означает высоту 3 размера шрифта. По умолчанию он включает только текст.
Поля, которые вы предоставляете с помощью pad, либо в самом виджете, либо при его упаковке. Использование place немного необычно и имеет свои специфические варианты использования, похоже, вам это не нужно. Вместо этого можно использовать диспетчер геометрии пакета.
from tkinter import *
root = Tk()
root.geometry("500x300")
root.resizable(False, False)
button = Button(root, text="Ihsan", bg="Black", fg="white",
activeforeground="white", activebackground="grey",# width=15, height=3,
font=("ariel", "43"))
#button.place(x=350, y=20)
button.pack(side=RIGHT)
root.mainloop()