The leader of the Conservative party has called on Gordon Brown to call an election after Labour lost their third-safest seat in Scotland in a by-election yesterday.

“I think the Prime Minister should have his holiday but then I think we need an election,” Mr Cameron said today.

“I think we need change in this country, and that’s how change should come about.”

The Tory leader added “what I wonder is whether we can put up with this for another 18 months.”

The Scottish National Party took Glasgow East from Labour, overturning a majority of more than 13,000.

John Mason, the successful SNP MP, won 11,277 votes (43%).

Labour’s Margaret Curran polled 10,912 (42%).

The Tory candidate came third with 1,639 votes and the Lib Dems were fourth with 915.

Speaking to party activists in Warwick today, the Prime Minister said:

“Have confidence that not only do we have the right policies but that when the time comes we will be able to persuade the British people.”

The Labour party lost the “safe” seat of Crewe and Nantwich to the Tories two months ago, while in last month’s by-election to replace Boris Johnson as MP for Henley they were pushed into fifth place, behind the Greens and the BNP.

Mr Johnson won the London Mayoral election in May, defeating the Labour candidate Ken Livingstone.

Yesterday’s defeat in Scotland will increase speculation that Mr Brown may be replaced as Labour leader before the next election, which is expected to be called in 2010.

The Scottish Secretary Des Browne admitted it was “a bad night” for the party.

“Gordon Brown, in my view and the view of the party, is outstandingly the best politician in the country,” he said.

“He is a man of known strengths – the country knows his strengths. At the end of the day, when you ask them who is the man to see us through these tough times, they will tell us that.”