Qualcuno ha avuto un esempio funzionante di utilizzo del widget curses.textpad.Textbox per modificare il testo esistente? Questo è, naturalmente, in un terminale Linux (ad esempio xterm).Modifica il testo usando Python e maledice il widget Textbox?
risposta
Ho trovato che il widget Edit
nel pacchetto urwid è sufficiente per le mie esigenze. Questo non è il widget Textpad, ma qualcosa di diverso. Il pacchetto urwid è in generale più bello, comunque. Tuttavia, non è ancora indolore. Il widget Edit
consente di inserire testo, ma non di sovrascriverlo (attivato con la chiave Ins), ma non è un grosso problema.
trovato questo c'è qualche minuto
import curses
import curses.textpad
stdscr = curses.initscr()
# don't echo key strokes on the screen
curses.noecho()
# read keystrokes instantly, without waiting for enter to ne pressed
curses.cbreak()
# enable keypad mode
stdscr.keypad(1)
stdscr.clear()
stdscr.refresh()
win = curses.newwin(5, 60, 5, 10)
tb = curses.textpad.Textbox(win)
text = tb.edit()
curses.beep()
win.addstr(4,1,text.encode('utf_8'))
Ho fatto anche una funzione per fare una casella di testo:
def maketextbox(h,w,y,x,value="",deco=None,underlineChr=curses.ACS_HLINE,textColorpair=0,decoColorpair=0):
nw = curses.newwin(h,w,y,x)
txtbox = curses.textpad.Textbox(nw)
if deco=="frame":
screen.attron(decoColorpair)
curses.textpad.rectangle(screen,y-1,x-1,y+h,x+w)
screen.attroff(decoColorpair)
elif deco=="underline":
screen.hline(y+1,x,underlineChr,w,decoColorpair)
nw.addstr(0,0,value,textColorpair)
nw.attron(textColorpair)
screen.refresh()
return txtbox
Per usarlo basta fare:
foo = maketextbox(1,40, 10,20,"foo",deco="underline",textColorpair=curses.color_pair(0),decoColorpair=curses.color_pair(1))
text = foo.edit()
textpad.Textbox(win, insert_mode=True)
fornisce di base inserire il supporto. Backspace deve essere aggiunto però.
Il codice iniziale non ha funzionato, ha deciso di eseguire un hack, funziona in modalità di inserimento e quindi quando si preme Ctrl-G viene visualizzato il testo nella posizione corretta.
import curses
import curses.textpad
def main(stdscr):
stdscr.clear()
stdscr.refresh()
win = curses.newwin(5, 60, 5, 10)
tb = curses.textpad.Textbox(win, insert_mode=True)
text = tb.edit()
curses.flash()
win.clear()
win.addstr(0, 0, text.encode('utf-8'))
win.refresh()
win.getch()
curses.wrapper(main)
- 1. Convalida modifica del testo in TextBox
- 2. Sottolinea il testo nel widget Etichetta Tkinter?
- 3. Come impostare il testo sulla vista testo di un widget
- 4. Relazione di testo e testo usando python e NLP
- 5. JavaFX inverso e ritaglio usando il testo?
- 6. Python Tkinter Widget testo con scorrimento automatico e personalizzato
- 7. Come evidenziare il testo in un widget di testo tkinter
- 8. Python registrazione a Tkinter Testo Widget
- 9. Proprietà valore e testo in asp.net TextBox (Il valore viene sovrascritto dal testo)
- 10. Modifica il carattere predefinito in Python Tkinter
- 11. wpf: selezionare il testo in TextBox con IsReadOnly = true?
- 12. Arresto del TextBox WPF dal crescere con il testo
- 13. Ottieni il testo di un widget di pulsante
- 14. Come posso taggare e tagliare il testo francese usando NLTK e Python?
- 15. Aggiungere testo a PDF esistente usando Python
- 16. Tastiera e-mail per il testo di modifica
- 17. kubernetes: modifica un segreto usando il cli?
- 18. python usando il metodo argparse.ArgumentParser
- 19. Da dove proviene il padding di TextBox?
- 20. Widget Android: come modificare il testo di un pulsante
- 21. Test con TextBox sotto il vetro DWM
- 22. Come ottenere il testo esatto da Modifica testo e impostare in visualizzazione testo in Android
- 23. Come creare un pulsante usando il widget tkinter Canvas?
- 24. Modifica testo che mostra il sottosquadro rosso sul testo
- 25. Modifica visibilità widget al clic
- 26. Modifica tag in un TextBox WPF
- 27. Ottenere il valore .Text da un TextBox
- 28. Come applicare il formato come 'Testo' e 'Contabilità' usando xlsxwriter
- 29. Come posso aggiungere il campo e il pulsante Modifica testo in ActionBar?
- 30. Python Tkinter - Come inserire il testo all'inizio della casella di testo?
Grazie per lo sforzo. Ho già provato la casella di testo. Ma il suo editing è troppo semplice. Non puoi nemmeno inserire il testo. Speravo di trovare qualcosa di più simile a nano, ma incorporabile in un'app. – Keith
Ho dovuto cambiare le ultime due righe in: 'stdscr.addstr (1,1, text) stdscr.refresh()' per farlo funzionare. Dopo aver inserito il testo nel pad di testo, ho dovuto premere Ctrl-G per inviarlo. –