IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

textctrl et scroll


Sujet :

wxPython

Vue hybride

c_jm2 textctrl et scroll 17/12/2008, 17h07
c_jm2 Pour compléter un peut mon... 19/12/2008, 09h34
pacificator Salut, peux-tu poster un... 19/12/2008, 11h03
c_jm2 salut, voici le code ... 19/12/2008, 11h53
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut textctrl et scroll
    Bonjours à tous,

    Je souhaite synchroniser verticalement deux textctrl (comme dans notepad++)
    Pour info je suis sous windows.

    Pour synchroniser j’utilise la fonction ShowPosition. Pour pouvoir utiliser cette fonction je récupère l’event EVT_SCROLLWIN et j’utilise evt.GetPosition() pour récupérer la position de la scroll bar. Le problème est que le range de cette scroll bar est en pixel (hauteur du text).
    Dans un premier temps j’ai divisé la position par la hauteur d’un caractère. Cela fonctionne mais pour descendre d’une ligne il faut descendre de trois positions la scroll bar. Pour régler cela il faudrait que le range de la scroll bar soit en nombre de ligne et non en pixel. Pour essayer de faire cela je force la scroll bar avec SetScrollbar mais après le release de la scroll bar celle-ci est recalculé et donc remit en pixel .

    Avez-vous une idée pour régler ce problème ou une autre solution pour réaliser la synchronisation.

    Cordialement
    Jean-Michel

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    Pour compléter un peut mon post.
    J’arrive a déplacer la scroll bar du deuxième texte en fonction du premier avec la fonction SetScrollPos. Cette fonction déplace bien la scroll bar mais pas le texte même après un textctrl.Refresh() et/ou Update()

  3. #3
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Salut,

    peux-tu poster un bout de code fonctionnel pour pouvoir tester, merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    salut,
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import wx
    import sys, traceback
     
    class TextScrollFrame(wx.Frame):
    	def __init__(self, parent, title):
    		wx.Frame.__init__(self, parent, title=title)
    		self.SetSize((600,500))
     
    		self.log_tc1 = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE|wx.TE_RICH|wx.TE_READONLY|wx.TE_NOHIDESEL|wx.HSCROLL)
    		self.log_tc2 = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE|wx.TE_RICH|wx.TE_READONLY|wx.TE_NOHIDESEL|wx.HSCROLL)
     
    		Box = wx.BoxSizer(wx.HORIZONTAL)
    		Box.Add(self.log_tc1, 1, wx.EXPAND)
    		Box.Add(self.log_tc2, 1, wx.EXPAND)
    		self.SetSizer(Box)
     
    		for i in range(100):
    			self.log_tc1.AppendText("toto%s\r\n"%(i+1))
    			self.log_tc2.AppendText("toto%s\r\n"%(i+1))
     
    		self.log_tc1.Bind(wx.EVT_SCROLLWIN_THUMBTRACK, self.scrollOnLog1)
    		self.Show()
     
    	def scrollOnLog1(self,evt):
    		pos=evt.GetPosition()
    		print "pos =",pos
    		self.log_tc2.SetScrollPos(wx.VERTICAL,pos,True)
    		evt.Skip()
    if __name__ == '__main__':
    	try:
    		app = wx.PySimpleApp(redirect=True)
    		frm = TextScrollFrame(None, "text scroll")
    		app.SetTopWindow(frm)
    		app.MainLoop()
    	except:
    		traceback.print_exc (file=open('error_scrolltext.txt', 'w')
    Sinon la seule solution que j'ai trouvé c'est de créer moi meme la scroll bar (grace à wx.TE_NO_VSCROLL comme style du textctrl qui supprime la scroll bar)

    voila je te merci de m'aider
    Cordialement
    Jean-Michel

Discussions similaires

  1. Fenetre sans Scroll Bar
    Par nicolas78986 dans le forum MFC
    Réponses: 15
    Dernier message: 01/06/2007, 03h15
  2. [TP]Scroll in 320x200
    Par Jagaraujo dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 07/08/2003, 13h46
  3. le fameux scrolling
    Par tanmieu dans le forum DirectX
    Réponses: 4
    Dernier message: 27/05/2003, 23h25
  4. scrolling vertical et horizontal
    Par myriam dans le forum MFC
    Réponses: 2
    Dernier message: 24/01/2003, 17h06
  5. scroll dans un label
    Par Pretender dans le forum Composants VCL
    Réponses: 9
    Dernier message: 27/09/2002, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo