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.
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
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.
Use Tkinter to make it perfect by select under frame and provide row and column number to display your output
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
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.
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
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.
Use Tkinter to make it perfect by select under frame and provide row and column number to display your output
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