如何修复按钮形状?

时间:2018-11-01 06:17:54

标签: python tkinter

对于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 :(得分:2)

默认情况下,按钮的宽度和高度以字符大小表示。因此,很难获得精确的平方。但是,我们可以做的是在按钮上添加一个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()

更新:

这是PhotoImage可以读取的带有字符串格式的1x1像素的版本。 现在使用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