Gå til innhold

Hvordan få char direkte fra kommandolinja?


Anbefalte innlegg

Videoannonse
Annonse

Har ikke brukt curses selv (gjør lite konsoll-programmering), men det finnes da en guide. Utdrag: Applications will also commonly need to react to keys instantly, without requiring the Enter key to be pressed; this is called cbreak mode, as opposed to the usual buffered input mode.

 

curses.cbreak()

 

Edit: Håper det hjalp? :_)

Endret av A_N_K
Lenke til kommentar

Takk, det hjalp litt, men så var det hvordan jeg hindrer programmet i å skape en «ny skjerm». Eventuelt hvordan jeg skriver til den nye skjermen som dukker opp. Med print fikk jeg det ikke til.

#! /usr/bin/python
# -*- coding: iso-8859-15 -*-s
import curses
#dette ses kun når programmet slutter av
print '(y or n )?'
#programmet «lager» en ny skjerm, hvordan hindre det?
stdscr = curses.initscr()
curses.echo()
curses.cbreak()


print 'dette vises ikke i det heletatt :('
while 1:
   c = stdscr.getch()
   
   if c:
       #avslutter
       curses.nocbreak(); stdscr.keypad(0); curses.echo();curses.endwin()
       if c == ord('y'):
           print 'you said yes'
       elif c == ord('n'):
           print 'you said no, exiting'
       else:
           print "you said something bogus :("     
   break

Lenke til kommentar

Vel, ok- jeg overså visst det. Jeg fikk det til som jeg ville nå, men det ville vært mye enklere viss jeg kunne gjort det direkte i «samme terminal» og bruke print istedet for stdscr.addstr() .

Det jeg kom fram til

#! /usr/bin/python
# -*- coding: iso-8859-15 -*-s
import curses
import sys

print 'entering program called with `%s`' % (sys.argv[0])
#programmet «lager» en ny skjerm, hvordan hindre det?
stdscr = curses.initscr()
curses.echo()
curses.cbreak()


stdscr.addstr('y or n?\n')
while 1:
   c = stdscr.getch()
   
   if c:
       if c == ord('y'):
           stdscr.addstr('you said yes')
       elif c == ord('n'):
           stdscr.addstr(' you said no, exiting')
       else:
           stdscr.addstr('you said something bogus :(')     
           break

curses.nocbreak(); stdscr.keypad(0); curses.echo();curses.endwin()
print 'quiting, bye bye. see you later aligator!'
       #avslutter

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...