Посмотри метод update…
Когда запускается gui приложение, то оно mainloop вызывает бесконечный цикл, в котором отрисовываются виджеты, происходит реакция на какие либо события (например на нажатия кнопок)
пример:
import time
from Tkinter import *
root=Tk()
def do():time.sleep(20)
b=Button(root,text='do',command=do)
b.pack()
root.mainloop()
при нажатии на кнопку, происходит замораживание цикла mainloop, и 20 секунд окно не будет ни на что реагировать.
В твоем случае, насколько я понял, приложение так же ждет завершения работы команды, заданной в popen.
Вместо os.popen(COMMAND), попробуй сделать subprocess.popen