Is there limit to the number of interface elements, and can this limit be changed?

I am writing an application which is used to read and write registers of a device connected through telnet. The device may have several sub-components (FPGAs, PLLs, IOExpanders, etc), each of which contains a register map. Some devices have only a few registers, whereas others have 50+. Each register has a dropdown with buttons to read and write individually defined bit fields, which as you can tell, starts to increase the number of UI elements quite significantly. The panel contains a 9-column grid for placing the elements, which includes (in order from left to right):

static textctrl
vertical line
static textctrl
vertical line
static textctrl
textctrl
read button
write button
empty space / dropdown button

With three devices containing over 50 registers each, the total count of elements is 9954 (!). Hypothetically, if I was able to compress this to 1 element per bit field, there would still be over 1100 elements, and as the number of supported devices increases, I will soon hit the limit once again. I realize the vertical lines could be removed, their purpose is for legibility, but there are other ways to make it readable. Anyways, I can run the program fine with only 2 of the device pages, but adding the third pushes the number of elements over what I assume to be the limit (Somewhere around 8000 is my guess). When I break this limit, I get errors such as the following:

logTitle.SetFont                (wx.Font(pointSize = 12, family = wx.FONTFAMILY_DEFAULT, style = wx.FONTSTYLE_NORMAL, weight = wx.FONTWEIGHT_NORMAL))

File “C:\Python27\lib\site-packages\wx-3.0-msw\wx_core.py”, line 10987, in SetFont
return core.Window_SetFont(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion “((HWND)GetHWND())” failed at …\src\msw\window.cpp(1156) in wxWindow::GetLayoutDirection(): invalid window

The call to SetFont works fine if I comment out a few registers, and the object that is having the font set is not even related to the register pages.

Performance is of no concern, and it is likely that with all the devices, the element count may reach 20-30 thousand. I am open to suggestions on simplifying the interface, but I would much rather increase the limit of elements if possible. Hopefully I have provided enough info. I have attached an image of the layout.

Hi Aaron,

I am writing an application which is used to read and write registers of a device connected through telnet. The device may have several sub-components (FPGAs, PLLs, IOExpanders, etc), each of which contains a register map. Some devices have only a few registers, whereas others have 50+. Each register has a dropdown with buttons to read and write individually defined bit fields, which as you can tell, starts to increase the number of UI elements quite significantly. The panel contains a 9-column grid for placing the elements, which includes (in order from left to right):

static textctrl
vertical line
static textctrl
vertical line
static textctrl
textctrl
read button
write button
empty space / dropdown button

With three devices containing over 50 registers each, the total count of elements is 9954 (!). Hypothetically, if I was able to compress this to 1 element per bit field, there would still be over 1100 elements, and as the number of supported devices increases, I will soon hit the limit once again. I realize the vertical lines could be removed, their purpose is for legibility, but there are other ways to make it readable. Anyways, I can run the program fine with only 2 of the device pages, but adding the third pushes the number of elements over what I assume to be the limit (Somewhere around 8000 is my guess). When I break this limit, I get errors such as the following:

What about using some other widget, above sounds more like a 'list' type thing.

- wx.listctrl
- wx.lib.hyperlistctrl
- ObjectListView
- wx.grid

Maybe check the different widgets in the wxPython demo.

Werner

···

On 6/27/2014 17:45, Aaron Hill wrote:

I’ve changed the structure slightly, down to 5 widgets per line. This solution won’t hold forever though. If possible I’d like an answer to my original question, whether or not there is a limit (very sure there is), and whether or not that limit can be changed.

There is a maximum number of GUI objects set for windows, by default
65, 536, this can be changed see you will normally start getting very slow performance
long before that due to things such as memory constraints. The best
way around this is to use virtual lists, (see the demo for
examples), but you could also be well advised to consider looking at
data view controls, (DVC), also in the demo.
Hope that helps.
Gadget/Steve

···

On 27/06/14 19:46, Aaron Hill wrote:

    I've changed the structure slightly, down to 5

widgets per line. This solution won’t hold forever though. If
possible I’d like an answer to my original question, whether or
not there is a limit (very sure there is), and whether or not
that limit can be changed.

  You received this message because you are subscribed to the Google

Groups “wxPython-users” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to wxpython-users+unsubscribe@googlegroups.com.

  For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

herebut