I tried with a .rootlogon.py and a rootlogon.C and I obtain the same results, could you share both of the files you use? I will use them to check the value of some gEnv
property after python / root startup.
Here they are:
.rootlogon.C (1.1 KB)
.rootlogon.py (780 Bytes)
How to reproduce my problem:
- Open root, type
TCanvas *c = new TCanvas() - A canvas with huge menu font will appear
- Open python
import ROOT
c = ROOT.TCanvas() - A canvas with a standard, small menu font will appear
So what I found is that the settings in gEnv are indeed visible from PyROOT too:
[etejedor@pcepsft999 build_oldpyroot_py2]$ python
Python 2.7.13 (default, May 9 2017, 16:39:50)
[GCC 7.1.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ROOT
>>> ROOT.TCanvas
aaa
<class 'ROOT.TCanvas'>
>>> ROOT.gEnv.GetValue("GUI.DefaultFont", "default")
'-*-helvetica-medium-r-*-*-20-*-*-*-*-*-iso8859-1'
do you also get this?
And in my case, both the C++ code and the Python one open the same canvas (the font of the menu is the same)
Yes, as I was writing before, proper gEnv settings are visible from pyROOT in my case, but do not seem to have any effect.
You have the same font in canvas from C++ and Python code - correct, big one, or standard one?
I have the standard one in both cases, I think nothing changes.
So I understand, that in your case font settings have no effect in both C++ and Python… Well, at least that should be easy to trace and fix
Perhaps @couet can confirm that the font settings do not work in C++ either (see rootlogon.C attached by the user)?
But they do work in C++ here. They don’t work in python only.
I am a bit confused as I was asked to join this long thread just now. Seems to me this kind of settings should be in $ROOTSYS/etc/system.rootrc . Not in a macro … did I miss something ?
Indeed, they work OK both in C++ and pyROOT when I put them into system.rootrc. However, the whole discussion started as an answer to a problem: how to change ROOT font size to resonable one depending on monitor resolution, because it does not readout monitor scaling from the operating system.
Yes, Bertrand explained me… I am afraid I do not have more input to give.
But, in my case the solution works in C++, it doesn’t work in pyROOT. So these kind of settings can be done, in principle, in a startup script. Unless it is a bug, not a feature, I guess it could also work in pyROOT, just something is preventing it, and hopefully can be easily fixed.
Well, I tried on Windows, and rootlogon.py
is never executed. When I try python rootlogon.py
, here is what I get:
C:\Users\bellenot\Downloads>python rootlogon.py
File "rootlogon.py", line 2
print "aaa"
^
So how can I try?
OK, so after fixing the rootlogon.py
script, if I start python -i rootlogon.py
, then everything works fine, like with rootlogon.C
. So for me there is nothing to fix…
So, if you set menu font size to, for example, 20, in rootlogon.py, run python and create a canvas, you get this large font in the canvas menu?
Yes, absolutely (but since PyROOT doesn’t wotk well on Windows, I can’t show you any screenshot…)
No need, I trust you If only someone could confirm that it works in the same way on linux, I would know that the trouble is somewhere in my system…
It works as well for me on Linux…
[bellenot@bbcc7x64 rootdev]$ python -i rootlogon.py
aaa
xrandr: Failed to get size of gamma for output default
>>> b = ROOT.TBrowser()
>>>
And I got a TBrowser with huge font
Thank you! I’ll try to trace the issue in my system.