You could do it with defining HTML object in `def init(self, *args, **kwargs): in layout object. This HTML will give you all the freedom you want for your needs.
There is another way too. To actually make your own template in in your templates folder and then in your layout object define the path to that template Example:
Field('name', template='path/to/template/single_line_input.html'),
Where 'name' is actually a widget.
Of course you could always try to do it with playing around in the CSS files for your app, something like float: left
or display: inline
might help, but you would have to define the classes on the widgets which should be displayed inline. This could be a bit tricky for someone who is not skilled in frontend CSS (for result could be various in different browsers and on different resolutions, so needless to say some testing is needed).
The problem you have is mainly the fact that browsers are rendering input fields as block objects by default, so they take up all the space in one line even if their width is less.