You don't want to halt your game for three seconds. Instead you want to look into more proper frame-rate limiting. See this answerthis answer to get you started. That is a much more sustainable and better way to move your object.
If you pause the game for three seconds, no events are captured and that's probably why you need to spam your key to get through the blocking wait call.
Also note, that you don't have to use integers here. You can just as well decrement x by 0.1 for an example. This would end up meaning that the block moves one pixel in ten frames.