2009-06-29 10 views
0

J'ai fait un petit outil qui analyse un morceau de texte, effectue un traitement simple (récupère les valeurs d'un dictionnaire, quelques regex, etc.) puis crache les résultats. Afin de faciliter la lecture des résultats, j'ai créé deux ports graphiques, l'un avec tkInter et l'autre avec wxPython, afin que la sortie soit bien affichée dans une zone de texte avec des mots ayant des couleurs différentes.wxPython RichTextCtrl beaucoup plus lent que le texte tkInter?

La mise en oeuvre de tkinter utilise Tkinter.Text objet et pour appliquer les couleurs aux mots utilise des balises (configurées avec la méthode Tkinter.Text.tag_config et de les transmettre à Tkinter.Text.insert), et la mesure tout en délivrant environ 400 mots différents de couleur est < 0.02s. L'implémentation wxPython utilise wx.richtext.RichTextCtrl et pour appliquer les couleurs aux mots utilise wx.richtext.RichTextCtrl.BeginTextColour puis wx.richtext.RichTextCtrl.AppendText; la performance est ridicule, il faut environ 1.4s pour faire le même travail qui n'a pris que 0.02s au port tkInter.

Est-ce un problème intrinsèque du widget RichTextCtrl, des liaisons wxPython, ou existe-t-il un moyen de l'accélérer?

Merci!

+1

Sur quelle plate-forme travaillez-vous? J'ai remarqué que wxPython est beaucoup plus lent sur Linux que sur Windows. – balpha

+0

Linux ... Je pourrais essayer sur Windows pour voir si ça va mieux. – fortran

+0

Je l'ai testé sur Windows et même plus vite (maintenant ça prend environ la moitié du temps, environ 0,6s), mais il est presque trente fois plus lent que la version de tkInter: -s – fortran

Répondre

1

Je suis ici copier le commentaire qui a résolu le problème:

Avez-vous essayé d'utiliser Freeze() et Thaw() à ne mettre à jour l'affichage une fois que vous avez terminé le texte annexant de couleur? - mghie 30 juin à 7:20

0

Cela évite légèrement la question, mais pourriez-vous utiliser wxStyledTextCtrl à la place?

Questions connexes