I am developing desktop based GUI (single form) using wxPython and loads it using remote citrix access from client private network.

Suppose, the GUI has certain group of select and text boxes which are loaded together when application starts. The value of select boxes come from database and on the basis of selection of select box value, corresponding text boxes (which are initially blank) are populated from database.

Now the problem is, due to slow remote access, we have to wait for long time (approximately 5-7 minutes ) before all controls are loaded. Is there any suggestion, if we can reduce this time ?

One way coming in first thought is to divide the GUI in multiple tabs and divide the controls among tabs. This way I need to load less controls when application starts for showing first tab. Other controls load, only after user click corresponding tab.

Any other way or this one is the best approach?

  • This amount of time is unusual (and to many customers unacceptable also). If the data retrieved is not HUGE (which you should not do), there would be a big problem with the way you are reading the data, the communication channel or the server.
    – NoChance
    Commented Apr 18, 2012 at 16:42
  • If you're using Citrix surely the speed of the remote link is largely unimportant? Do you have, for example, your application and its data on the same LAN at some location, and the users access it via Citrix sessions?
    – Alan B
    Commented May 3, 2012 at 16:20

2 Answers 2


7 minutes? This must be megabytes worth of data. Even over a 56K modem you could download a megabyte or more in that time. If it isn't megabytes of data, then you are using a bad access pattern like a fetch-one cursor, and should change to a batch download pattern. If it is a lot of small individual queries, fire them off simultaneously on threads or write a database procedure to collect all of the data server-side and send it in one query.

If the values for the select boxes change infrequently, then cache the values in a text file or local database and use those until the real values arrive.

Or, write the values into the application or a shared library. Then check for an application update on start, the way that tax applications work.

If the data does change frequently, track the changes and provide a way to download patches to update the local data caches.

Finally, set it up so that any mistakes because of out-dated data will be caught during data submission to the real database.

  • Yes, its because I am using "bad access pattern". Actually,there is lots of data and while reading the data, GUI is getting stuck while data is being read by database.
    – SRC
    Commented Apr 19, 2012 at 16:01
  • I think your suggested approach for queries to "fire simultaneous on threads" will do the work. Forgive me if I say I never used multi threading or scare by complexity of using multi threading. I have posted question for the same on SO stackoverflow.com/questions/10232560/….
    – SRC
    Commented Apr 19, 2012 at 16:30

With any form design, it's best to only load the data the user will need to see upon initial load. So instead of throwing every control the user will interact with on the first form, either spread it out as you suggested with tabs, or have them open on separate windows/menus/etc.

  • :Thank you for your suggestion. Actually, I discussed possibility of having tabs/menu with management, but they want all control into single form.
    – SRC
    Commented Apr 19, 2012 at 17:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.