On 05/10/2016 23:12, Akira Li wrote:
Beverly Howard <b...@bevhoward.com> writes:

...snip...
A primary question would be, "What are options for building a display
that would update displayed values without scrolling?"

To rewrite only the last character, you could use '\b':

  import os
  import itertools
  import time
  for c in map(str.encode, itertools.cycle('\-/|')):
      os.write(1, b'\b'+c)
      time.sleep(.3)

To rewrite only the last line, you could use '\r':

  for i in range(1, 101):
      time.sleep(.1)
      print('\r{:4.0%}'.format(i/100), flush=True, end='')

To control the full screen in the terminal e.g., to change the position,
you could use *blessings* module [1]:

  from blessings import Terminal  # $ pip install blessings

  line = 'Line in the middle of the terminal.'
  term = Terminal()
  with term.hidden_cursor(), term.fullscreen():
      x = (term.width - len(line)) // 2
      y = (term.height - 1) // 2
      with term.location(x, y):
          print(term.bold_white_on_black(line))

      with term.location(0, term.height - 1):
          input('press <Enter> to exit..')

For interactive command-line applications from a simple prompt to full
screen terminal applications, you could use *prompt_toolkit* module [2].

My first goal is to build a program that would interface with a
Raspberry Pi to control a heating process.


For flexibility, you could split your program into a server and a client
that controls it (text, GUI, web).

All this advice seems to be getting out of hand, with suggestions of 'curses' and 'blessings' and using GUI. I've tried 'ncurses' elsewhere and it was over the top for what I wanted to do.

The OP wants to runs on Pi which I think runs Linux.

So all they are asking is, is there a way of randomly positioning the cursor within the terminal window so that the next output is at that position. Something like an escape sequence. Terminal screens have been around a long time, you'd think someone would have had such a requirement before!

I'd quite like to know too. However I've just tried a test sequence ("<esc>[P1d" to move the cursor to row 1) and it didn't work. If there's reason why something so basic won't work (hence the need for curses etc) then that would be useful to know too. (And how does curses manage it?!)

--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to