A child shouted “Mum, someone has a knife!”, moments before the mayor of Gdansk in Poland was stabbed in front of hundreds of people.
Pawel Adamowicz was attacked on stage at the country’s biggest charity event, which was raising money for children’s hospitals.
He is in hospital in a serious condition.
The 27-year-old suspect, who has a criminal record, has been detained.
He said the Civic Platform party, which led the previous government and had supported Mr Adamowicz’s re-election, had wrongfully imprisoned him.