Poser 11 Python UI scaling
I use Windows 10 on a 28" 4k monitor. I have windows scaling set to 200% so that I can see the Windows UI.
When I run Poser I use a UI scaling factor of 2.0 when is really easy on the eye and makes the program a joy to use. All the buttons are really crisp and manipulating the figures and props in 4k makes them almost pop out of the screen. Smith Micro have really embraced the HiDpi screen which as great to see as most of my other design type programs look awful at 4k.
However. All that changes as soon as I run a Python script. It's like stepping back into the days of Windows XP. All of the dialogs have some problems to the point where some are unreadable and/or unusable. Even the Wardrobe Wizard, which is provided with Poser 11 manages to be virtually unusable:
Buttons are truncated so that I can't read the text. Sometimes can't even select the buttons.
Drop-downs are likewise truncated.
In some cases UI elements just don't appear as they are off the bottom of the dialog making it impossible to continue.
I've messaged a few of the Python authors and the response I usually get is that it seems to be an issue with Poser Python UI scaling and is not something that they can fix. Is this something which will be addressed in a future service release or is there a workaround I can do to fix the scaling myself? The inability to scale Python scripts properly turns a great program into a real headache.
@guernseyman I would have thought, though I don't know for certain until I research it more thoroughly, that it was the responsibility of Python script authors to ensure that their script windows adhered to the 'UI_SCALE_FACTOR' preference manually. From what I've seen of the wxPython UI windowing methods, they are absolutely standard Python, with no special additions for Poser's sake, so if Poser is scaling it's UI, then scripts written prior to that feature's implementation will have absolutely no knowledge of what scaling Poser is applying to its own UI items.
So many times I've seen scripts ported from tkInter to wxPython, or written in wxPython on Windows that don't automatically translate to macOS Poser, because the underlying python libraries and modules do not have exactly the same functionality, or even default parameter values in all cases.
If authors refer to problems they cannot fix, then I interpret that to mean that they are blaming the functionality of the provided UI windowing library modules they have built their script upon. I would not expect them to modify those library modules to rectify the problem, in, for instance, the case where the library purports to display a window in the OS's default style, with title bars and resize boxes, etc. But if they have built the window and its features at a lower level of specification, then including Poser's UI_SCALE_FACTOR preference in their window and button dimension calculations should absolutely be possible.
If the scripts are free, then there's probably little incentive for the authors to update them, if they remain on un-UI-scaled platforms themselves. If the scripts are commercial, then my suggestion would be to apply some more, gentle persuasion. "The squeaky wheel gets the grease" style.
I freely admit that I have done little Python UI work, though I did succeed in converting a tkInter script to wxPython so it could run in macOS Poser, while remaining mostly sane [twitch, twitch]. I shall commit to memory, though, the need to test appearances of UI elements in a non-unitary UI_SCALE_FACTOR environment.
[...] it's just occurred to me to ask whether you were referring to the standard dialogs that Poser Python already implements, like asking for a file, or choosing from a list. Do they appear correctly? If so, then @SMS has done their job correctly, and it's just the fully-user-created scripts that need more work to support UI scaling.
When some UI elements are not visible, it is, sometimes, possible that the script UI window can be resized, even if it doesn't display any sizing handles. You can try dragging the corners.
Thanks for the reply. It makes perfect sense. I've done some testing with the scripts that I have and it's now apparent that all scaling in Python (whether Poser or not presumably) is handled from the operating system's display settings.
I've tried various UI scaling in Poser and it makes no difference to the Python UI at all. The scripts I have problems with all begin to fail at 125% setting and above. By 150% the problems are noticeable and then by 200% most are virtually unusable. Bizarrely enough it's not the cost of the software which seems to matter. EZSkin, which is free, scales perfectly whilst Otoy's Octane Render Plugin which costs $200 ($600 with the actual rendering suite) is all but unusable.
A workaround is to override high DPI scaling behaviour for Poser and allow the OS to "Zoom in" everything which happens within Poser, include scripts. Unfortunately this means that Poser is effectively working in 1080p mode and is a complete waste of my 4k monitor.
Ideally it would be nice to manually override scaling options for each Python script but, unfortunately, that is not an option in Windows as scripts are not recognised a executable files.
Armed with this knowledge I think I will be a bit more determined when dealing with authors, especially ones which have taken my money.