Пиксельная ширина и высота кнопок? - PullRequest
0 голосов
/ 06 сентября 2018

В моей программе Tkinter я экспериментировал с способом увеличения размера кнопки в Python. Когда я попробовал эти вещи «ширина» и «высота», все, что я получил, это то, что выглядит действительно грязно, возможно, ссылаясь только на ширину и высоту с точки зрения размера шрифта. И когда я пытался добавить «px» в конце каждого числа, я просто получаю сообщение об ошибке. Как настроить размер кнопки в пикселях?

Вот мой текущий код.

from tkinter import *
import tkinter as tk

root = tk.Tk()
root.geometry("960x600")

button_qwer = Button(root, text="asdfasdf", width="10", height="10")
button_asdf = Button(root, text="asdfasdf", width="20", height="20")
button_zxcv = Button(root, text="asdfasdf", width="30", height="30")

button_qwer.grid(row=0, column=0)
button_asdf.grid(row=0, column=1)
button_zxcv.grid(row=0, column=2)

root.mainloop()

1 Ответ

0 голосов
/ 06 сентября 2018

Если у кнопки есть изображение, ширина и высота указываются в пикселях. Если у него нет изображения, ширина и высота указываются в количестве символов на основе размера символа «0» (ноль) шрифта, который использует кнопка. Если в нем есть изображение и текст, значения указываются в пикселях.

Использование невидимого изображения

Одним из решений является предоставление ему невидимого изображения, чтобы атрибуты обрабатывались как пиксели. Кнопки по-прежнему не будут иметь такого точного размера из-за дополнительных украшений, таких как рамка и кольцо подсветки. Если вам нужен точный размер, вам нужно также установить эти параметры на ноль или настроить ширину, чтобы учитывать ширину границ.

Пример:

from tkinter import *
import tkinter as tk

root = tk.Tk()
root.geometry("960x600")

null_image = tk.PhotoImage(width=0, height=0)

button_qwer = Button(root, text="asdfasdf", width="10", height="10",
                     image=null_image, compound="center", borderwidth=0,
                     highlightthickness=0, padx=0, pady=0)
button_asdf = Button(root, text="asdfasdf", width="20", height="20",
                     image=null_image, compound="center", borderwidth=0,
                     highlightthickness=0, padx=0, pady=0)
button_zxcv = Button(root, text="asdfasdf", width="30", height="30",
                     image=null_image, compound="center", borderwidth=0,
                     highlightthickness=0, padx=0, pady=0)

button_qwer.grid(row=0, column=0)
button_asdf.grid(row=0, column=1)
button_zxcv.grid(row=0, column=2)

root.mainloop()

Использование рамки

Другим решением было бы создать рамку с определенным размером, а затем использовать place, чтобы поместить кнопку в рамку так, чтобы она заполняла рамку.

Пример:

from tkinter import *
import tkinter as tk

root = tk.Tk()
root.geometry("960x600")

f1 = tk.Frame(root, width=10, height=10)
f2 = tk.Frame(root, width=20, height=20)
f3 = tk.Frame(root, width=30, height=30)

f1.grid(row=0, column=0)
f2.grid(row=0, column=1)
f3.grid(row=0, column=2)

button_qwer = Button(f1, text="asdfasdf")
button_asdf = Button(f2, text="asdfasdf")
button_zxcv = Button(f3, text="asdfasdf")

button_qwer.place(x=0, y=0, relwidth=1, relheight=1)
button_asdf.place(x=0, y=0, relwidth=1, relheight=1)
button_zxcv.place(x=0, y=0, relwidth=1, relheight=1)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...