Post_type doesn’t work for widgets?

It sounds like your widget references the global $loop for some reason. This could possibly be due to the internals of the Widget class or due to interference of other plugins, i guess.

As a first step, to be on the safe side, try using a different variable name. The global loop is referred to as $loop, by simply renaming yours to $myloop you can avoid any confusions between global and local.

Secondly, if the trouble persists, test your widget on a ‘page’ type page. Or any other ‘single’ page. Does it only show a single row now?