Tkinter Entry widgets 'font' property (API ?) changed in Python 2.5.2?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Atul

    Tkinter Entry widgets 'font' property (API ?) changed in Python 2.5.2?

    Hi,

    The snippet :

    entryFontDescr = Entry()["font"]
    print self.entryFontD escr

    On Windows XP it displays

    {MS Sans Serif} 8

    On Suse Linux 10.2 it used to display

    TkTextFont 10

    I upgraded to OpenSuse 11 and now it shows

    TkTextFont

    I used this snippet to obtain the default font size for an Entry
    widget. Now with an OS upgrade, my code is broken.

    The python version on the upgraded box is

    ~python
    Python 2.5.2 (r252:60911, Jun 6 2008, 23:32:27)
    [GCC 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]] on
    linux2
    Type "help", "copyright" , "credits" or "license" for more information.
    >>>
    I dont remember the exact version of Python on the earlier Suse 10.2
    box

    My questions:

    1. Is this not an API change ? I looked up Python's release
    documentation and didn't find any mention of the same.
    2. How can I achieve what I want alternatively ?

    Regards,
    -- Atul
  • Eric Brunel

    #2
    Re: Tkinter Entry widgets 'font' property (API ?) changed in Python 2.5.2 ?

    On Wed, 06 Aug 2008 06:01:59 +0200, Atul <atul.nene@gmai l.comwrote:
    Hi,
    >
    The snippet :
    >
    entryFontDescr = Entry()["font"]
    print self.entryFontD escr
    >
    On Windows XP it displays
    >
    {MS Sans Serif} 8
    >
    On Suse Linux 10.2 it used to display
    >
    TkTextFont 10
    >
    I upgraded to OpenSuse 11 and now it shows
    >
    TkTextFont
    >
    I used this snippet to obtain the default font size for an Entry
    widget. Now with an OS upgrade, my code is broken.
    >
    The python version on the upgraded box is
    >
    ~python
    Python 2.5.2 (r252:60911, Jun 6 2008, 23:32:27)
    [GCC 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]] on
    linux2
    Type "help", "copyright" , "credits" or "license" for more information.
    >>>>
    >
    I dont remember the exact version of Python on the earlier Suse 10.2
    box
    >
    My questions:
    >
    1. Is this not an API change ? I looked up Python's release
    documentation and didn't find any mention of the same.
    Tkinter is a very thin wrapper over an embedded tcl/tk interpreter. So I
    guess the API change is caused by a tcl/tk version change, not by a Python
    one. You can check the version of the tcl/tk interpreter you're using from
    Python via:

    root = Tkinter.Tk()
    root.tk.eval('p uts $tcl_patchLevel ')
    root.tk.eval('p uts $tk_patchLevel' )
    2. How can I achieve what I want alternatively ?
    I'd use this way:

    import tkFont
    entryFontDescr = Entry()["font"]
    entry_font = tkFont.Font(fon t=entryFontDesc r)
    print entry_font.actu al()
    Regards,
    -- Atul
    HTH
    --
    python -c "print ''.join([chr(154 - ord(c)) for c in
    'U(17zX(%,5.zmz 5(17l8(%,5.Z*(9 3-965$l7+-'])"

    Comment

    • Atul

      #3
      Re: Tkinter Entry widgets 'font' property (API ?) changed in Python2.5.2 ?

      Hi Eric,

      Thanks for your response.
      Tkinter is a very thin wrapper over an embedded tcl/tk interpreter. So I  
      guess the API change is caused by a tcl/tk version change, not by a Python  
      one. You can check the version of the tcl/tk interpreter you're using from  
      Python via:
      >
      root = Tkinter.Tk()
      root.tk.eval('p uts $tcl_patchLevel ')
      root.tk.eval('p uts $tk_patchLevel' )
      >
      The Windows box reports 8.4.12 whereas the OpenSuze 11 box reports
      8.5.2
      I suppose the Suze 10.2 box had a lesser version and hence the API
      change.
      2. How can I achieve what I want alternatively ?
      >
      I'd use this way:
      >
      import tkFont
      entryFontDescr = Entry()["font"]
      entry_font = tkFont.Font(fon t=entryFontDesc r)
      print entry_font.actu al()
      >
      This works very well, thank you :)

      Regards,
      -- Atul

      Comment

      Working...