Is it possible to print a string at a certain screen position inside IDLE?

Question:

EDIT: I just discovered that it’s possible to obtain a similar behaviour by using the standard library "curses". There are some demonstrations about how it works here and there, for example on YouTube: http://www.youtube.com/watch?v=Bj-H9uPEa5U

It’s a strange and silly question I know, but I’m curious because I don’t know that much about python and how it works.
From the terminal or when you use IDLE, is there any way to print a string at a certain screen position?

I’ll try to explain this better: Do you remember the old days when you used to make small programs in Basic, maybe on a Commodore 64, Apple II or ZX Spectrum?
During that days if you wanted to print a string at a certain position you used to write something like this:

10 LOCATE 30, 40 : PRINT "hello world"

I’m just curious to know if there’s any way to tell python to print a string at a certain position, and if there’s a way to know how many columns and how many rows can be actually displayed inside the IDLE window.

I’ve also made a mockup draw, to explain this concept.

Mockup screen to explain what I mean

Asked By: Cesco

||

Answers:

I don’t know if this works on IDLE, but it does in any normal terminal:

import sys
def print_there(x, y, text):
     sys.stdout.write("x1b7x1b[%d;%df%sx1b8" % (x, y, text))
     sys.stdout.flush()

This uses Ansi-Escape Sequences

Answered By: rumpel

This question only has one real answer and it isn’t a very good one. The method:

import sys
def print_there(x, y, text):
     sys.stdout.write("x1b7x1b[%d;%df%sx1b8" % (x, y, text))
     sys.stdout.flush()

Isn’t perfect. I’d recommend staying clear of doing things like this in the terminal. If you want to do Gui’s and stuff use Pygame, Tkinter, or Django.

Answered By: Draxdo

Use Tkinter to make it perfect by select under frame and provide row and column number to display your output

Answered By: Ehsan Rahi

To avoid the issue raised by @user3431399, you first need to make win32 console recognize ANSI/VT100 escape sequences. I got the same problem as @user3431399 on my Windows 10 terminal and I solved it by following the solution recommended by @Daniel De Léon. That is, I logged in as administrator at the windows prompt (cmd command). Then I copied, pasted, and ran the command.

REG ADD HKCUCONSOLE /f /v VirtualTerminalLevel /t REG_DWORD /d 1

Answered By: pmntang
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.