"Einfg"-Taste nutzen

Fragen zu Tkinter.
Antworten
hendrik
User
Beiträge: 3
Registriert: Sonntag 24. Oktober 2004, 19:24
Wohnort: Ankum
Kontaktdaten:

Sonntag 24. Oktober 2004, 19:32

Guten Tag,

ich schreibe gerade ein bestimmt noch nie dagewesenes Programm :-) und
habe dabei eine Frage.... Ich nutze Python/Tkinter unter GNU/Linux in der Version 2.3.3...
Ich frage stellt sich bei einem "Text"- Objekt. Ich würde gerne die Möglichkeit der
"Einfg"-Taste als Standart haben.

Es soll ein Programm zum erstellen von Gitarrentabulatur werden. Man erzeugt also
beliebig viele Spalten in diesem Stil:
E-----------------------------------------------------------------------------------------
A-----------------------------------------------------------------------------------------
D-----------------------------------------------------------------------------------------
G-----------------------------------------------------------------------------------------
B-----------------------------------------------------------------------------------------
e-----------------------------------------------------------------------------------------

Dort soll man dann den Cursor positionieren und die "-"-Zeichen durch die
Werte ersetzen. Hat jemand eine Idee / Ansatz / Lösung?

Vielen Dank im Vorraus,
Hendrik
hendrik
User
Beiträge: 3
Registriert: Sonntag 24. Oktober 2004, 19:24
Wohnort: Ankum
Kontaktdaten:

Dienstag 26. Oktober 2004, 11:47

es ist nicht möglich / vorgesehen soweit ich, google und #python.de mir weiterhelfen konnten. alle die ein ähnliches problem haben, müssen wohl eine ersatzlösung suchen oder die gui nach wxpython portieren.
joe

Dienstag 26. Oktober 2004, 13:00

Hi!
Ich hatte die ausgangsfrage nicht ganz verstanden. Du schreibst "Einfg"-Taste als Standart und weiter unten "-"-Zeichen durch die Werte ersetzen. Letzteres klingt eher nach überschreibmodus und gerade nicht nach einfügemodus.
Den überschreibemodus müsste man einfach mit delete() nachbilden können; also mit bind() auf tastendrücke reagieren und dann ein zeichen wieder löschen.
joe
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 26. Oktober 2004, 14:24

Hi!

Ich hab mal ein wenig herumgespielt und das ist dabei rausgekommen:

Code: Alles auswählen

from Tkinter import *

def enter(e):
	row,col = t.index(INSERT).split('.')
	row,col = int(row),int(col)
	end = "%i.%i" % (row,col+1)
	start = "%i.%i" % (row,col)
	t.delete(start,end)

root = Tk()

t = Text(bg='white')
t.pack()

t.insert("0.1",'''
E---------------------------------------
A---------------------------------------
D---------------------------------------
G---------------------------------------
B---------------------------------------
e---------------------------------------
''')

t.bind("<Any-Key>", enter)

root.mainloop()
Naja, wenn Du dich mit den Cursortasten herumbewegen willst, musst Du die noch abfange (jetzt wird immer ein Zeichen gelöscht). Viel Spaß! :D

Falls das mal jemand braucht: INSERT enthält beim Text-Widget die Cursorposition.

Gruß, mawe
joe

Dienstag 26. Oktober 2004, 14:53

Hallo!
mawe hat geschrieben:

Code: Alles auswählen

	row,col = t.index(INSERT).split('.')
	row,col = int(row),int(col)
	end = "%i.%i" % (row,col+1)
	start = "%i.%i" % (row,col)
	t.delete(start,end)
Etwas kompakter:

Code: Alles auswählen

    textctrl.delete(textctrl.index(INSERT))
joe
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 26. Oktober 2004, 15:26

Hi!

Naja, etwas :D

Gruß, mawe
hendrik
User
Beiträge: 3
Registriert: Sonntag 24. Oktober 2004, 19:24
Wohnort: Ankum
Kontaktdaten:

Dienstag 26. Oktober 2004, 20:25

vielen dank.

wenn man im notepad oder vergleichbarem die "einfg" / "insert" taste drückt, kann man bereits vorhandene zeichen überschreiben. das wäre für das programm hilffreich, um die zeichen schnell zu editieren und die "-" zu ersetzen. das geht aber laut "man Tk:Text" nicht. Vielleicht gibt es unter Tkinter eine Alternative, da ich Tkinter allgemein nicht so ansprechend finde, habe ich das Projekt nach wxpython portiert. Trotzdem nochmal danke, falles Bedarf da sein sollte, kann ich auch den Quelltext posten oder auf einen FTP schieben.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 26. Oktober 2004, 20:35

Hi!

Bedarf an Code ist immer vorhanden, also poste! :D (Showcase oder Codesnippets).

Gruß, mawe
joe

Dienstag 26. Oktober 2004, 21:05

Hallo!
hendrik hat geschrieben: wenn man im notepad oder vergleichbarem die "einfg" / "insert" taste drückt, kann man bereits vorhandene zeichen überschreiben. das wäre für das programm hilffreich, um die zeichen schnell zu editieren und die "-" zu ersetzen. das geht aber laut "man Tk:Text" nicht.
Daß das geht, haben wir ja gezeigt. Und du kannst natürlich auch darauf reagieren, wenn jemand die einfg-taste drückt (bind("<Insert>",...)), also zwischen einfüge- und überschreibmodus wechseln.
joe
Antworten