Цель программы - стать калькулятором, где в поле ввода отображается буква / цифра, которую представляет кнопка. Всегда есть способ грубой силы определить параметры каждой кнопки. Мне нужен настроенный класс кнопок с определенными свойствами, чтобы мне не нужно было переопределять каждую кнопку. Поэтому я наследую класс Button для создания подкласса. Я решил поместить click-event-method в класс, который показан ниже. Но, кажется, выдает ошибку, когда я нажимаю кнопку, когда отображается главное окно. Можете ли вы помочь мне выяснить, что не так. Полный код приведен ниже.
import tkinter as tk
import tkinter.font as tkFont
root = tk.Tk()
root.title("Simple Calculator")
myFont = tkFont.Font(family='Helvetica', size=19, weight='bold')
e = tk.Entry(root, width = 20,font=myFont)
e.grid(column=0,row=0,columnspan=4)
class calc_button(tk.Button):
def __init__(self, parent, *args, **kwargs):
tk.Button.__init__(self, parent, *args, **kwargs)
self.parent = parent
self["height"]=1
self["width"]=6
self["font"]=myFont
def ClickMe(self):
print(f'The text is {self["text"]} ')
button1 = calc_button(root,text="1",command=calc_button.ClickMe)
button1.grid(row=4,column=1)
root.mainloop()
Ошибка, как показано ниже:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\subramaniantr\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
TypeError: ClickMe() missing 1 required positional argument: 'self'