wx.TextCtrl: Position des Cursors setzen.

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Hallo, ich bins schon wieder und wuerde gerne wissen wie ich die Position des Cursors(dem blinkendem Ding nach dem die Zeichen erscheinen :) ) in einem TextCtrl auf eine bestimmte Position setze, bzw die Position des Cursors rausbekomme, beides wuerde ich eigentlich brauchen.

Danke fuers Lesen und im vorraus fuer alle Antworten!
PS. Falls einer weiss wie ich den markierten Text in einem TextCtrl bekomme waere ich auch dankbar ;)
Zweiteres habe ich schon rausgefunden:
GetStringSelection()
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo name!

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import wx
import  wx.lib.fancytext as fancytext

wx.SetDefaultPyEncoding("iso-8859-1")


class MyFrame(wx.Frame):
    
    def __init__(
        self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
    ):
        
        wx.Frame.__init__(self, parent, id, title, size = size)
        
        self.lastfocus = None
        
        panel = wx.Panel(self)
        
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
        
        self.txt1 = wx.TextCtrl(panel, size = wx.Size(600, 200), style = wx.TE_MULTILINE)
        vbox_main.Add(self.txt1, 1, wx.EXPAND | wx.ALL, 5)
        
        self.txt2 = wx.TextCtrl(panel, size = wx.Size(-1, 100), style = wx.TE_MULTILINE)
        vbox_main.Add(self.txt2, 0, wx.ALL | wx.EXPAND, 5)
        
        panel.Fit()
        self.Fit()
        self.SetSizeHints(*self.GetSize())
        
        self.timer = wx.Timer()
        self.timer.Bind(wx.EVT_TIMER, self.on_timer)
        self.timer.Start(1500)
    
    
    def on_timer(self, event):
        txt1 = self.txt1
        txt2 = self.txt2
        
        txt2.AppendText("\nCursor Pos: %03i; " % txt1.GetInsertionPoint())
        txt2.AppendText("Last Pos: %03i; " % txt1.GetLastPosition())
        txt2.AppendText("Lines %03i; " % txt1.GetNumberOfLines())
        sel = txt1.GetSelection()
        txt2.AppendText(
            "Selection: (%i, %i) '%s'='%s'" % (
                sel[0], sel[1], txt1.GetRange(*sel), txt1.GetStringSelection()
            )
        )


def main():
    """Testing"""
    
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Hm. Ich muesste die Pos des Cursors bestimmen wenn das Objekt abgewaehlt wird, gibts dazu auch eine Moeglichkeit, und gerold, danke danke danke fuer deine Hilfe!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

name hat geschrieben:Ich muesste die Pos des Cursors bestimmen wenn das Objekt abgewaehlt wird
Hi name!

Ich würde, wenn das TextCtrl den Fokus verliert, die Position zwischenspeichern. Diese kannst du dann jederzeit weiterverwenden.

http://paste.pocoo.org/show/731/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten