Savoir combien de lignes peuvent être affichées dans wx.richtext.RichTextCtrl sans défilement

voix
2

J'écris un lecteur e-book en Python + wxPython, et je voudrais savoir combien de lignes de texte peuvent être affichés dans un RichTextCtrl donné avec la mise en forme actuelle sans défilement.

Je pensais que l' utilisation et en divisant la hauteur du contrôle par RichTextCtrl.GetFont().GetPixelSize(), mais il semble que le paramètre de taille de pixel de wx.Fontn'est spécifié sous Windows et GTK. De plus, cela ne couvre pas l' espacement vertical supplémentaire entre les lignes / paragraphes.

Je pourrais bien sûr obtenir la taille de police en points, tenter d'obtenir la résolution ppi de l'écran, et de le faire de cette façon, mais 1) la ligne problème d'espacement reste encore et 2) c'est un niveau d'abstraction beaucoup trop faible pour quelque chose comme ce.

Y at-il une façon saine de faire cela?

EDIT : L'objectif est de diviser l'ebook vers le haut dans les pages, de sorte que l'unité de défilement est une page entière, par opposition à une ligne.

Créé 17/08/2010 à 16:52
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

Le code source de PageDown méthode suggère qu'il n'y a pas une façon saine de le faire ...

Voici ma proposition folle (qui rompt le contenu widget, caret, position affichée ...) qui faire défiler une page et de mesurer combien de temps ce rouleau est ...

def GetLineHeight(rtc):
    tallString = "\n".join([str(i) for i in xrange(200)])
    rtc.SetValue(tallString)
    rtc.SetInsertionPoint(0)
    rtc.PageDown()
    pos = rtc.GetInsertionPoint()
    end = tallString.find("\n",pos)
    lineHeight=int(tallString[pos:end])
    return lineHeight
Créé 26/08/2010 à 12:03
source utilisateur

voix
0

Avez-vous essayé d'appeler la méthode GetNumberOfLines ()? Selon Robin Dunn, qui devrait fonctionner, même si elle ne prend pas en compte les lignes enveloppées.

Créé 19/08/2010 à 22:22
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more