The important thing is that the application logic is separate from the user interface. It doesn't matter whether than means "two functions in the same module", or "two modules". Whether you decide to split your code into two modules depends on how complex your code is.
For example, if you are writing a "Hello World" application, you would be nuts to split this into two files.
def greet(name):
return "Hello, %s!" % name
def do_greet(name=None):
if name is None:
name = raw_input("What is your name? ").strip()
print greet(name)
do_greet()
Only you know how big and complex your application is, so only you know whether or not you should separate the GUI interface from the internal logic. But, my guess is that for anything non-trivial, you probably should have one main module handling the UI, and a second (and possibly more) modules handling the implementation, plus at least one other module for testing.