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
"Einfg"-Taste nutzen
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.
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
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
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Ich hab mal ein wenig herumgespielt und das ist dabei rausgekommen:
Naja, wenn Du dich mit den Cursortasten herumbewegen willst, musst Du die noch abfange (jetzt wird immer ein Zeichen gelöscht). Viel Spaß!
Falls das mal jemand braucht: INSERT enthält beim Text-Widget die Cursorposition.
Gruß, mawe
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()
Falls das mal jemand braucht: INSERT enthält beim Text-Widget die Cursorposition.
Gruß, mawe
Hallo!
joe
Etwas kompakter: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)
Code: Alles auswählen
textctrl.delete(textctrl.index(INSERT))
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.
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.
Hallo!
joe
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.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.
joe