[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: HiDPI monitors
From:       ullix <ullix () urkam ! de>
Date:       2021-01-17 13:38:05
Message-ID: b20fb605-f94a-9d74-b065-88b4034846d2 () urkam ! de
[Download RAW message or body]

@Elvis: duly noted! But allow me to postpone for a few days to allow 
that little success ;-)


Am 16.01.21 um 14:28 schrieb Elvis Stansvik:
> Den lör 16 jan. 2021 kl 14:26 skrev Elvis Stansvik <elvstone@gmail.com>:
> > Nice! Just a small comment about
> > 
> > > MySetting = 100 / int(QScreen.devicePixelRatio(app.primaryScreen()))
> > Here you are assuming that the application is on the primary screen.
> > In a multi-monitor setup, it may be on another screen with a different
> > device pixel ratio. It's possibly a better idea to call
> > QPaintDevice::devicePixelRatio() on the widget that will hold your
> > matplotlib plots.
> > 
> > Also, the application may be moved between screens, which you should
> > ideally listen for (there are some Qt mechanisms for this I believe,
> > screenChanged signal, though I've found it a bit unreliable at times),
> > and if it happens, re-create your matplotlib plots with the correct
> > DPI passed in (calculated from the new screen the widget is on), and
> > also re-create any pixmaps you may have created in terms of physical
> > pixels (if you have any like that).
> I see now that you said "and the user says he can even move it back
> and forth between an 8K and a FullHD monitor without distortion except
> for a wobble in the transition !!?", so perhaps matplotlib takes care
> of this on its own once the plot has been shown, which is great.
> 
> Elvis
> 
> > How much of this you want to bother with is up to you of course :) You
> > may decide it's enough if the user has to restart the application if
> > he/she wants it on another screen.
> > 
> > HiDPI really is a pain :)
> > 
> > Cheers,
> > Elvis
> > 
> > Den fre 15 jan. 2021 kl 17:34 skrev ullix <ullix@urkam.de>:
> > > My struggle with HiDPI monitors has come to an at least workaround solution \
> > > thanks to your responses, so many thanks! I'll try to summarize:
> > > 
> > > PyQt(5) applications will behave well with this command:
> > > 
> > > QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
> > > 
> > > Whether this next command will also be needed depends on your explicit (perhaps \
> > > implicit) use of pixmaps with HiDPIs available I had no benefit from it
> > > 
> > > QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
> > > 
> > > Unfortunately, matplotlib is separate from this and needs its own adaptation of \
> > > settings. This can be done by setting the 'dpi=' parameter in every call to \
> > > figure: matplotlib.pyplot.figure(num=None, figsize=None, dpi=MySetting, .... )
> > > 
> > > But MySetting is a bit tricky: it basically must reverse the scaling. The \
> > > default dpi is: MySetting = 100. So, when your scaling is 200%, then set \
> > > MySetting=50. Is your scaling 300%, then set MySetting=33. 
> > > I don't know if there is a single command which could set dpi for the session?
> > > 
> > > Thankfully the "devicePixelRatio" of QScreen basically has Scaling/100, i.e. \
> > > the values 1, 2, 3 for the above examples. Therefore you can set: MySetting = \
> > > 100 / int(QScreen.devicePixelRatio(app.primaryScreen())) 
> > > In the rare case that you do not have several 4k and 8k monitors to test with \
> > > :-( you can use Xephyr as suggested by VA. Though when I tried the examples \
> > > refernenced by him  https://indigo.re/posts/2020-05-18-hidpi-testing.html each \
> > > one crashed on my system! But in my need I came back and just tried the small \
> > > script and it worked! Script: \
> > > https://gitlab.com/hydrargyrum/attic/blob/master/xephyr-run-cmd/xephyr-run-cmd 
> > > I can now start my program and run it in proper scale with this command:
> > > ./xephyr-run-cmd -dpi 200 -screen 4000x2000 -- ./geigerlog
> > > 
> > > And lastly a screenshot on a real 8k monitor on Win10:
> > > Full WidthxHeight is 2732x1443 (open it);
> > > and the user says he can even move it back and forth between an 8K and a FullHD \
> > > monitor without distortion except for a wobble in the transition !!? 
> > > Thanks again,
> > > 
> > > ullix
> > > 
> > > 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic