Не наследуются атрибуты через tkinter.button

Пишу небольшую пошаговую стратегию в рамках курсовой. В данном коде в функции def move я пытаюсь переместить атрибуты с одной кнопки на другую, визуально они вроде бы перемещаются, но когда я пытаюсь вызвать get_info я ничего не получаю. Сижу уже часов 5, не могу понять как исправить.

import random
import tkinter as tk
from PIL import Image, ImageTk
import threading


class Color(object):
    EMPTY = 0
    BLACK = 1
    WHITE = 2

class Move:
    xstart = -1
    ystart = 0
    xdest = 0
    ydest = 0


class Field_btn(tk.Button):
    color = Color.EMPTY
    Getstatus = None

    def __init__(self, color, master, x, y, *args, **kwargs):
        super(Field_btn, self).__init__(master, width=6, height=3, *args, **kwargs)
        self.x = x
        self.y = y
        self.color = color

    def get_moves(self, filed_btn, turn):
        pass

    def __str__(self):
        return '0'

    def get_info(self, filed_btn, x, y):
        pass

    def __repr__(self):
        return f'Пусто {self.x} {self.y}'

    def nextturn(self):
        pass

class Unit(tk.Button, object):
    IMG = None
    MovementPointStart = None
    Getstatus = 0

    def __init__(self, color, master, x, y, *args, **kwargs):
        self.color = color
        super(Unit, self).__init__(master, width=6, height=3, *args, **kwargs)
        self.x = x
        self.y = y
        self.color = color

    def __str__(self):
        return self.IMG[0 if self.color == Color.WHITE else 1]

    def __repr__(self):
        return f'Юнит {self.x} {self.y} {self.Heatl} {Unit.__str__(self)}'

    def nextturn(self):
        print('sosu')
        if self.MovementPointsStart > self.MovementPoints:
            print(self.MovementPointsStart)
            self.MovementPoints = self.MovementPointsStart
            print('sosnul')
        else:
            print('pososal')
            pass

    def get_info(self, filed_btn, x, y):
        info = 0
        if self.color == Color.BLACK:
            info = (type(self), self.Heatl, self.MovementPointsStart, str('/'), self.MovementPoints, 'Black')
        else:
            info = (type(self), self.Heatl, self.MovementPointsStart, str('/'), self.MovementPoints,'White')
        return info

    def get_moves(self, filed_btn, turn):
        print(turn)
        i = 1
        while i==1:
            print('zestko')
            if turn % 2 == 0 and self.color == Color.WHITE:
                print('sosnul')
                if self.MovementPoints > 0:
                    print('huiza')
                    if filed_btn.get_color(Move.xstart, Move.ystart) == Color.WHITE or filed_btn.get_color(Move.xdest, Move.ydest) == Color.EMPTY:
                        if Move.xdest < Move.xstart:
                            xend = Move.xstart - Move.xdest
                        else:
                            xend = Move.xdest - Move.xstart
                        if Move.ydest < Move.ystart:
                            yend = Move.ystart - Move.ydest
                        else:
                            yend = Move.ydest - Move.ystart
                        self.MovementPoints = self.MovementPoints - (xend + yend)
                        break
                    break
                else:
                    print("У вас нет очков перемещения")
                    break
            else:
                if turn % 2 == 0:
                    print("Сейчас не ваш ход")

            if turn % 2 == 1 and self.color == Color.BLACK:
                print('sosnul')
                if self.MovementPoints > 0:
                    print('huiza')
                    if filed_btn.get_color(Move.xstart, Move.ystart) == Color.BLACK or filed_btn.get_color(Move.xdest, Move.ydest) == Color.EMPTY:
                        if Move.xdest < Move.xstart:
                            xend = Move.xstart - Move.xdest
                        else:
                            xend = Move.xdest - Move.xstart
                        if Move.ydest < Move.ystart:
                            yend = Move.ystart - Move.ydest
                        else:
                            yend = Move.ydest - Move.ystart
                        self.MovementPoints = self.MovementPoints - (xend + yend)
                    break
                else:
                    print("У вас нет очков перемещения")
                    break
            else:
                print("Сейчас не ваш ход")
                break


class Pawn(Unit):

    IMG = ('♟', '♙')
    Heatl = 150
    MovementPoints = 15
    MovementPointsStart = 15

class Game:
    turn = 0
    ROW = 10
    COLUMNS = 10
    win = tk.Tk()
    win.title('Eve Offline')
    win.geometry("900x560")
    x=0
    y=0

    def __init__(self):
        self.field_btn = []
        for x in range(Game.ROW):
            temp = []
            for y in range(Game.COLUMNS):
                btn = Field_btn(Color.EMPTY, Game.win, bg='green', x=x, y=y, text='bebra')
                temp.append(btn)
            self.field_btn.append(temp)

    def set_unit(self):
        self.field_btn[1][2] = Pawn(Color.WHITE, Game.win, x=2, y=1, text='♙')
        self.field_btn[9][9] = Pawn(Color.BLACK, Game.win, x=9, y=9, text='♟')
        for x in range (Game.ROW):
            for y in range (Game.COLUMNS):
                self.field_btn[x][y].config(command=lambda button=self.field_btn[x][y]: self.get_click(button))

    def create_window(self):
        for x in range(Game.ROW):
            for y in range(Game.COLUMNS):
                btn = self.field_btn[x][y]
                btn.grid(row=x, column=y)
        Muvprikaz = tk.Button(bg='green', width=20, height=4, text='MOVE', activebackground='blue')
        Muvprikaz.config(command=lambda button=self.Muvprikaz: self.Muvprikaz())
        Muvprikaz.place(x=550, y=300)
        NextturnB = tk.Button(bg='gray', width=20, height=4, text='Next Turn')
        NextturnB.config(command=lambda button=self.nextturn(Game.turn): self.nextturn(button))
        NextturnB.place(x=700, y=300)

    def start(self):
        self.set_unit()
        self.create_window()
        self.print_button()
        self.win.mainloop()

    def print_button(self):
        for row_btn in self.field_btn:
            print(row_btn)

    def get_color(self, x, y):
        return self.field_btn[y][x].color

    def get_info(self, x, y):
        return self.field_btn[y][x].get_info(self, x, y)

    def move(self):
        print(Move.xdest, Move.ydest)
        print('sukablat')
        print([Move.xdest],[Move.ydest])
        self.field_btn[Move.xdest][Move.ydest].config(background='green', text='SS')
        self.field_btn[Move.xdest][Move.ydest].config(command=lambda button=self.field_btn[Move.xdest][Move.ydest]: self.get_click(button))
        self.field_btn[Move.xdest][Move.ydest] = self.field_btn[Move.xstart][Move.ystart]
        self.field_btn[Move.xstart][Move.ystart] = Field_btn(Color.EMPTY, Game.win, bg='green', x=Move.xstart, y=Move.ystart, text='bebra')
        for x in range (Game.ROW):
            for y in range (Game.COLUMNS):
                self.field_btn[x][y].config(command=lambda button=self.field_btn[x][y]: self.get_click(button))
        self.create_window()
        self.field_btn[Move.xstart][Move.ystart].Getstatus = 0
        print('blatsuka')

        self.field_btn[Move.xstart][Move.ystart].config(bg='green', text='bebra')
        self.Update()

    def nextturn(self, turn):
        self.turn +=1
        print(self.turn)
        for x in range(Game.ROW):
            for y in range(Game.COLUMNS):
                if self.field_btn[x][y] == self.field_btn[x][y]:
                    self.field_btn[x][y].nextturn()
        print("hui")
        return turn

    def get_click(self, clicked_button):
        if Unit.Getstatus == 0:
            print(Unit.Getstatus)
            x = (clicked_button.x)
            y = (clicked_button.y)
            Unit.Getstatus = Unit.Getstatus+1
            clicked_button.config(bg='red')
            self.print_button()
            print(self.get_info(x, y))
            print(Unit.Getstatus)
            Move.xstart = x
            Move.ystart = y
            Unit.Getstatus == 0
        elif Unit.Getstatus == 1:
            Unit.Getstatus = 0
            print(Unit.Getstatus)
            clicked_button.config(bg='green')

    def dest_click(self, clicked_button):
        x = (clicked_button.x)
        y = (clicked_button.y)
        clicked_button.config(bg='blue')
        Move.xdest = x
        Move.ydest = y
        print(Move.ydest, Move.xdest)
        print('eblan')
        self.Move()

    def Move(self):
        self.field_btn[Move.xstart][Move.ystart].get_moves(self, self.turn)
        self.move()

    def Muvprikaz(self):
        if Move.xstart>-1:
            self.print_button()
            print(Move.xstart, Move.ystart)
            for x in range (Game.ROW):
                for y in range (Game.COLUMNS):
                    self.field_btn[x][y].config(command=lambda button=self.field_btn[x][y]: self.dest_click(button))
        else:
            pass

    def Update(self):
        for x in range (Game.ROW):
            for y in range (Game.COLUMNS):
                self.field_btn[x][y].config(command=lambda button=self.field_btn[x][y]: self.get_click(button))
        Move.xstart = -1
        Move.ystart = 0
        Move.xdest = 0
        Move.ydest = 0



g = 1
game = Game()
game.start()

Ответы (0 шт):