What value does  param have when the method is called?  One of the 
dictionary keys, I hope.   setFont() won't be in effect if there is already 
a stylesheet specifying the value, according to the docs, so let's hope 
that's not the case.

You can iterate over the Weight enum:

for w in QFont.Weight:
    w_str = f'{repr(w)}'
    g.es(w_str)

<Weight.Thin: 100>
<Weight.ExtraLight: 200>
<Weight.Light: 300>
<Weight.Normal: 400>
<Weight.Medium: 500>
<Weight.DemiBold: 600>
<Weight.Bold: 700>
<Weight.ExtraBold: 800>
<Weight.Black: 900>

With a little string manipulation you could build the table without 
hardcoding anything. That would probably be better.
On Thursday, October 31, 2024 at 4:33:42 PM UTC-4 jkn wrote:

> This works, I think, and is closer to the documented behaviour, but it is 
> not very beautiful.
>
>                 def weight_modifier(item: Item, param: str) -> None:
>                     wd = {"Thin": QtGui.QFont.Weight.Thin,
>                         "ExtraLight": QtGui.QFont.Weight.ExtraLight,
>                         "Light": QtGui.QFont.Weight.Light,
>                         "Normal": QtGui.QFont.Weight.Normal,
>                         "Medium": QtGui.QFont.Weight.Medium,
>                         "DemiBold": QtGui.QFont.Weight.DemiBold,
>                         "Bold": QtGui.QFont.Weight.Bold,
>                         "ExtraBold": QtGui.QFont.Weight.ExtraBold,
>                         "Black": QtGui.QFont.Weight.Black
>                         }
>                     arg = wd.get(param, QtGui.QFont.Weight.Medium)
>
>                     font = item.font(0)
>                     font.setWeight(arg)
>                     item.setFont(0, font)
>
>                 modifier = weight_modifier
>
>
> On Thursday, October 31, 2024 at 6:00:18 PM UTC jkn wrote:
>
>> Indeed - I started doing this before my initial posting, I just have 
>> limited time windows available. Since we seem to agreed that there is 
>> something amiss here, I am over my initial question about needing an 
>> additional package to install as well as PyQt6, and I can experiment from 
>> there.
>>
>> Thanks for helping to confirm my suspicions...
>>
>>     J^n
>>
>>
>> On Thursday, October 31, 2024 at 4:57:26 PM UTC [email protected] wrote:
>>
>>> You will probably want to put some print statements into the 
>>> declutter_style() method to see what arguments get passed when you ask 
>>> for WEIGHT demibold or whatever. I suspect that nothing you pass in will 
>>> give any result except the default 75, but that's where the print 
>>> statements may help.  Even the signature of the method contradicts how the 
>>> code works. The docstring isn't right, either.  The method probably got 
>>> massively revised somewhere in the past and a few things got garbled.  
>>>
>>> In addition, the line getattr(QtGui.QFont, param,75) queries the QFont 
>>> class, not the instance actually being used by the item whose font is 
>>> supposed to be changed, and I don't see how that makes sense. 
>>>
>>> So add some print statements  and see if they can help sort it all out.  
>>> I don't feel like spending time figuring out how to set up for decluttering 
>>> in a way that will demonstrate a visibly decluttered headline with bold 
>>> type.  If I did, print statements would be my starting point.
>>>
>>> On Thursday, October 31, 2024 at 12:36:00 PM UTC-4 jkn wrote:
>>>
>>>> indeed. My cheap fix is to patch and set the default to 700, as you 
>>>> have done. But what if I want to see an effect line "WEIGHT DemiBold" for 
>>>> some declutter patterns?
>>>>
>>>> On Thursday, October 31, 2024 at 3:26:40 PM UTC [email protected] 
>>>> wrote:
>>>>
>>>>> I don't see how it can work because any string that goes along with 
>>>>> WEIGHT that feed into the function gets discarded, and then you get the 
>>>>> default.  But as I said, it's hard to work through to be sure. "75" would 
>>>>> give a light to normal weight, depending on the font. 
>>>>>
>>>>> On Thursday, October 31, 2024 at 10:47:34 AM UTC-4 jkn wrote:
>>>>>
>>>>>> Yes, this matches my (brief) investigations.
>>>>>>
>>>>>> But using
>>>>>>
>>>>>> WEIGHT 700
>>>>>>
>>>>>> did not work either - I had to use 700 as the default in the 
>>>>>> getattr() call, as I wrote a few posts above.
>>>>>>
>>>>>> i am suspecting that the original code didn't properly work in PyQt5, 
>>>>>> and any WEIGHT line would cause the default in the getattr() to be 
>>>>>> returned. That used to be 75, but has to be er. 700 for bold in PyQt6.
>>>>>>
>>>>>> I will try whether WEIGHT 100 does anything (eg. feint, the opposite 
>>>>>> of bold) in PyQt5.  suspect not ... in which case there is a small bug 
>>>>>> here, I think. I will attempt to fix it.
>>>>>>
>>>>>> On Thursday, October 31, 2024 at 2:24:38 PM UTC [email protected] 
>>>>>> wrote:
>>>>>>
>>>>>>> I had a quick look at the way it's used, and I find it hard to 
>>>>>>> understand.  I can see the intention but the layers of indirection make 
>>>>>>> it 
>>>>>>> hard. Say the pattern in myLeoSettings is *WEIGHT BOLD*, as you 
>>>>>>> wrote. What string gets fed into declutter_style()?   
>>>>>>> declutter_style() uses the string in the method call param = 
>>>>>>> c.styleSheetManager.expand_css_constants(arg).split()[0].   Every 
>>>>>>> string I've given that method returns the same string, or the first 
>>>>>>> word of 
>>>>>>> it. None of those strings exist of attributes of QFont, so the default 
>>>>>>> always comes back, which is 75.
>>>>>>>
>>>>>>> Anyway, 700 is the value to use for bold, not 75.  It's an integer, 
>>>>>>> not a string.
>>>>>>>
>>>>>>> On Thursday, October 31, 2024 at 9:23:44 AM UTC-4 jkn wrote:
>>>>>>>
>>>>>>>> it is the getting of the argument, from eg:
>>>>>>>>
>>>>>>>> # part of declutter-pattern
>>>>>>>> WEIGHT 700
>>>>>>>> or ?
>>>>>>>> WEIGHT Bold     # as per documentation
>>>>>>>>
>>>>>>>> => "arg = 700"
>>>>>>>>
>>>>>>>> that is not working, I think.
>>>>>>>>
>>>>>>>> On Thursday, October 31, 2024 at 1:15:28 PM UTC [email protected] 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On Thursday, October 31, 2024 at 7:45:05 AM UTC-4 Thomas Passin 
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Either of these work in the sense of executing without producing 
>>>>>>>>> an error.  I haven't tried applying the font to see the results:
>>>>>>>>>
>>>>>>>>> from leo.core.leoQt import QtGui, QtWidgets
>>>>>>>>> QFont = QtGui.QFont
>>>>>>>>>
>>>>>>>>> newfont = QFont('Georgia')
>>>>>>>>> newfont.setWeight(QFont.Weight.Bold)
>>>>>>>>> # or
>>>>>>>>> newfont.setWeight(700)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Now I've tried it and yes, I do get bold text.  That detour with arg 
>>>>>>>>> = getAttr() isn't needed.
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wednesday, October 30, 2024 at 2:58:37 PM UTC-4 jkn wrote:
>>>>>>>>>
>>>>>>>>> ... I see that the values for the Weight enum for 
>>>>>>>>> QFont.setWeight() seem to have changed for PyQt6. It is now a scale 
>>>>>>>>> of 1 to 
>>>>>>>>> 1000, instead of 1 to 99 as previously.
>>>>>>>>>
>>>>>>>>> https://doc.qt.io/qt-6/qfont.html#Weight-enum
>>>>>>>>>
>>>>>>>>> Changing this in qt_tree helps:
>>>>>>>>>
>>>>>>>>> --- a/leo/plugins/qt_tree.py 
>>>>>>>>> +++ b/leo/plugins/qt_tree.py 
>>>>>>>>> @@ -307,7 +307,7 @@ class LeoQtTree(leoFrame.LeoTree): 
>>>>>>>>>             elif cmd == 'WEIGHT': 
>>>>>>>>>  
>>>>>>>>>                 def weight_modifier(item: Item, param: str) -> 
>>>>>>>>> None: 
>>>>>>>>> -                    arg = getattr(QtGui.QFont, param, 75) 
>>>>>>>>> +                    arg = getattr(QtGui.QFont, param, 700) # WAS 
>>>>>>>>> 75 
>>>>>>>>>                     font = item.font(0) 
>>>>>>>>>                     font.setWeight(arg) 
>>>>>>>>>                     item.setFont(0, font)
>>>>>>>>>
>>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/leo-editor/a6accf88-08fe-4395-96b6-5b2546d2af78n%40googlegroups.com.

Reply via email to