[Python] How to make a rounded button tkinter?

Discussão em 'Python' iniciado por Stack, Agosto 20, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to get rounded buttons for my script using tkinter.

    I found the following code in an answer to How to make a Button using the tkinter Canvas widget?:

    from tkinter import *
    import tkinter as tk

    class CustomButton(tk.Canvas):
    def __init__(self, parent, width, height, color, command=None):
    tk.Canvas.__init__(self, parent, borderwidth=1,
    relief="raised", highlightthickness=0)
    self.command = command

    padding = 4
    id = self.create_oval((padding,padding,
    width+padding, height+padding), outline=color, fill=color)
    (x0,y0,x1,y1) = self.bbox("all")
    width = (x1-x0) + padding
    height = (y1-y0) + padding
    self.configure(width=width, height=height)
    self.bind("<ButtonPress-1>", self._on_press)
    self.bind("<ButtonRelease-1>", self._on_release)

    def _on_press(self, event):
    self.configure(relief="sunken")

    def _on_release(self, event):
    self.configure(relief="raised")
    if self.command is not None:
    self.command()
    app = CustomButton()
    app.mainloop()


    but I get the following error:

    TypeError: __init__() missing 4 required positional arguments: 'parent', 'width', 'height', and 'color'

    Continue reading...

Compartilhe esta Página