Python Tkinter设置按钮形状
时间: 2024-01-02 21:02:42 浏览: 275
在Python Tkinter中,可以使用`tkinter.ttk`模块创建带有自定义形状的按钮。下面是一个示例代码,演示如何创建一个圆形按钮:
```
import tkinter as tk
import tkinter.ttk as ttk
class CircleButton(ttk.Frame):
def __init__(self, master=None, **kwargs):
super().__init__(master, **kwargs)
self.button = ttk.Button(self, style='C.TButton')
self.button.pack(fill='both', expand=True)
self.bind('<Configure>', self._configure)
def _configure(self, event):
x = self.winfo_width() / 2
y = self.winfo_height() / 2
r = min(x, y)
self.button.place(relx=0.5, rely=0.5, anchor='c')
self.button.configure(width=int(2 * r), height=int(2 * r), borderwidth=0)
root = tk.Tk()
style = ttk.Style()
style.configure('C.TButton', padding=0, relief='flat',
background='white', foreground='black')
style.map('C.TButton', background=[('pressed', 'gray')])
circle_button = CircleButton(root, width=100, height=100)
circle_button.pack(padx=50, pady=50)
root.mainloop()
```
在这个示例中,我们创建了一个继承于`tkinter.ttk.Frame`的`CircleButton`类,该类包含一个圆形的按钮。我们在`__init__`方法中创建了一个`ttk.Button`实例,并设置了它的样式为`C.TButton`,然后将它放置在`CircleButton`实例中心。我们也为`CircleButton`类的实例绑定了`<Configure>`事件,以便在窗口大小调整时重新调整按钮的大小和位置。
接下来,我们使用`ttk.Style`创建了一个名为`C.TButton`的新样式,其中设置了`padding`为0、`relief`为`flat`、背景颜色为白色和前景颜色为黑色。我们还为样式映射定义了一个背景颜色为灰色的按下状态。最后,我们实例化了`CircleButton`类,并将它放置在主窗口中。
运行这个示例代码,你会看到一个圆形的按钮。你可以根据需要修改`CircleButton`类的实现来创建不同形状的按钮。
阅读全文