tkinter设置button形状
时间: 2023-07-22 14:22:58 浏览: 653
可以使用tkinter中的Button组件的`bd`参数来设置button的形状。`bd`参数指定了button的边框宽度,通过调整边框宽度的大小,可以改变button的形状。
例如,可以创建一个圆形的button,代码如下:
```
import tkinter as tk
root = tk.Tk()
button = tk.Button(root, text="Click me!", bd=0, bg="red", activebackground="green", width=20, height=20, highlightthickness=0, relief="flat")
button.pack()
root.mainloop()
```
在上述代码中,我们将`bd`参数设置为0,将`highlightthickness`参数设置为0,这样可以去掉button的边框和高亮边框。然后,将button的背景色设置为红色,激活背景色设置为绿色,这样可以让button在点击时显示出不同的颜色。最后,将button的宽度和高度都设置为20,就可以创建一个圆形的button了。
相关问题
Python Tkinter设置按钮形状
在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`类的实现来创建不同形状的按钮。
python tkinter button 形状
在Tkinter中,Button组件默认是矩形形状。如果你想要改变Button的形状,可以使用PIL(Python Imaging Library)模块中的ImageTk库来创建自定义形状的Button。
以下是一个简单的例子,演示如何创建一个圆形形状的Button:
```python
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
# 创建圆形形状的Button
canvas = Canvas(root, width=100, height=100)
canvas.pack()
img = Image.new("RGB", (100, 100), "white")
draw = ImageDraw.Draw(img)
draw.ellipse((10, 10, 90, 90), fill="green", outline="green")
button_img = ImageTk.PhotoImage(img)
button = Button(canvas, image=button_img, command=lambda: print("Button clicked!"))
button.pack()
root.mainloop()
```
在这个例子中,我们使用PIL库中的Image和ImageDraw类创建了一个100x100的白色图像,并在其中绘制了一个绿色的圆形。然后,我们使用ImageTk库将图像转换为Button可以使用的格式,并将其赋值给Button的image属性。最后,我们将Button添加到Canvas中以显示它的形状。
阅读全文