Tkinter contiendrait le module re ?

Résolu

Bonjour,

Ce code-ci ne fonctionne pas ( re inconnu) :

#import re

pat = '^[A-Za-z_0-9]+ [0-9\.]+x[0-9\.]+$'
s = 'xxx 160x100'

if not re.match(pat, s): print('erreur')

Par contre celui-là fonctionne bien:

from tkinter import *

pat = '^[A-Za-z_0-9]+ [0-9\.]+x[0-9\.]+$'
s = 'xxx 160x100'

if not re.match(pat, s): print('erreur')

Etonnant, non ?
Windows / Edge 114.0.1823.79

4 réponses

  1. Salut,

    Oui, tkinter importe le module (ligne 41).

    https://github.com/python/cpython/blob/v3.11.0/Lib/tkinter/__init__.py

    1. Salut,

      Ok

      Je suis en Python 3.7.2, et je pense que ce n'est plus valable dans les versions

      plus récentes car le programme sort une erreur sur une autre machine ayant

      installé Python récemment (il faut vraiment ajouter import re)

      1. On pourrait l'importer explicitement dans les versions supérieures, mais bon, je n'y vois pas trop l'intérêt :-)

        from tkinter import re
        
        pat = '^[A-Za-z_0-9]+ [0-9\.]+x[0-9\.]+$'
        s = 'xxx 160x100'
        
        if not re.match(pat, s): print('erreur')
        1. Bah non,

          Pour être sur que ca marche tout le temps, j'ai importé les 2 modules

          (en fait, dans le code complet il y a une interface graphique)

          import re
          from tkinter import *
          
          1. Modérateur

            Bonjour,

            Oui, c'est ce qu'il faut faire. En effet, rien ne garantit que tkinter importe re. Il vaut donc mieux importer le module re explicitement.