Как исправить форму кнопки? - PullRequest
0 голосов
/ 01 ноября 2018

Формы кнопок различны для Windows и Linux. Мне нужны квадратные кнопки. Как я могу это исправить?

import tkinter as tk

root = tk.Tk()
frame = tk.Frame(root)
frame.pack()

buttons = [[None] * 3 for _ in range(3)]
for i in range(3):
    for j in range(3):
        but = buttons[i][j]
        but = tk.Button(frame)
        but.grid(row=i, column=j)

root.mainloop()

enter image description here

1 Ответ

0 голосов
/ 01 ноября 2018

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

import tkinter as tk

root = tk.Tk()
tk.Frame(root)
my_image = tk.PhotoImage(file="./Colors/1x1.gif")

for x in range(3):
    for y in range(3):
        tk.Button(text="", image=my_image, height=40, width=40, relief="groove").grid(row=x, column=y)

root.mainloop()

Обновление:

Вот версия с разрешением 1x1 в строковом формате, которую может прочитать PhotoImage. Теперь с ompound="center" вы можете использовать текст с изображением 1x1 в той же кнопке.

import tkinter as tk


root = tk.Tk()
tk.Frame(root)
my_image = tk.PhotoImage("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=")

for x in range(3):
    for y in range(3):
        tk.Button(text="X", image=my_image, height=40, width=40, relief="groove", compound="center").grid(row=x, column=y)

root.mainloop()

Результаты:

enter image description here

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