Поставить курсор в консоли внизу

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
здравствуйте после строки кода
input_ = input(f'''Введите число - обозначение
и нажмите Enter\n''')
просится поставить курсор в консоли внизу, как это сделать?

стал сам искать ответ https://digitology.tech/docs/p... s.html#id5
оно? когда опробую пример по ссылке сообщение говорит
No module named '_curses'
но с помощью pip я ставил curses, и как быть? _curses - у меня не находит, спс
 

Dominus

Новичок
Пользователь
Май 23, 2020
20
1
3
Судя по ошибке, библиотека не импортирована в код программы. А вообще чтобы мы не гадали желательно выложить весь код
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
Код:
import curses

stdscr = curses.initscr()  # инициализировать curses путём вызова функции initscr()
begin_x = 20
begin_y = 7
height = 5
width = 40
# функция newwin() создаёт новое окно заданного размера, возвращая новый объект окна
# координаты всегда передаются в порядке y,x, то есть верхний левый угол окна — координата (0,0)
win = curses.newwin(height, width, begin_y, begin_x)
спс
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
Python:
pip install windows-curses
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спс, взлетело
теперь сообщение
Redirection is not supported-Перенаправление не поддерживается
скажите пжл сабж и что должен делать пример в посте № 3, как этого добиться?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
если вы запускаете в IDE, вам нужно включить настройку чтобы IDE эмулировала терминал...
curses работает только в терминале...
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
в IDE не запускаю и не планирую, запускаю в пайчарме, тогда как?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
IDE - это интегрированная среда разработки...
пайчарм это IDE...
в ней есть настройка, чтобы она эмулировала терминал, под рукой пайчарма нет, не могу по памяти сказать где это включается...
либо запустите просто из командной строки, все заработает...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
делается это в Run-Edit Configurations-установить галочку Emulate terminal in output console=Эмулировать терминал в консоли вывода
скажите пжл сабж и что должен делать пример в посте № 3, как этого добиться? пока ошибка - curses function returned NULL=функция curses вернула NULL
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
запустите в командной строке и увидите что он делает...
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
запустите в командной строке и увидите что он делает...
я её как огня боюсь-скажите как это сделать
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
если пайчарм есть то скорее всего питон добавлен в переменные среды...

если открыли консоль в папке со скриптом то так
python <имя файла>.py

если нет, то так
python <полный путь до файла>.py

ваш скрипт ничего не делает...
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
ваш скрипт ничего не делает...
ок, добился запустить в командной строке = python C:\pythonProject\main.py
а как добиться того, что в него заложено?=
функция newwin() создаёт новое окно заданного размера, возвращая новый объект окна
и в пайчарме это вообще не будет работать?
ну и главнее сабж, спс
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
пример перевода курсора в консоли
Python:
from ctypes import Structure, windll, c_char_p, c_short

STD_OUTPUT_HANDLE = -11


class COORD(Structure):
    pass


COORD._fields_ = [('X', c_short), ('Y', c_short)]


def print_at(x, y, s):
    h = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
    windll.kernel32.SetConsoleCursorPosition(h, COORD(y, x))
    windll.kernel32.WriteConsoleA(h, c_char_p(s.encode("utf-8")), len(s.encode("utf-8")), None, None)


print_at(50, 0, "test")
input()
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
скажите что означают 50, 0, -11?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
50 и 0 - это координаты x и y, выступают аргументами тут
Python:
...
def print_at(x, y, s):
    h = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
    windll.kernel32.SetConsoleCursorPosition(h, COORD(y, x))
    windll.kernel32.WriteConsoleA(h, c_char_p(s.encode("utf-8")), len(s.encode("utf-8")), None, None)
...

STD_OUTPUT_HANDLE = -11 - это стандартное устройство вывода, вывод консоли

подробнее можно почитать в документации микрософта...
 
Последнее редактирование:

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
я видимо лишнего добиваюсь?
код из первого поста
Код:
input_ = input(f'''Введите число - обозначение
и нажмите Enter\n''')
после которого будет видно мигающий курсор в консоли под строкой
"и нажмите Enter" так как следом идёт - \n - перевод строки
где ввод будет как обычно зелёного цвета, а пока всё что есть-немного не так))
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
просится поставить курсор в консоли внизу
в консоли внизу, это не под строкой...

вот так?
Python:
input_ = input(f'''Введите число - обозначение
и нажмите Enter\n''')
input()
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
в консоли внизу, это не под строкой...

вот так?
ну, сорри-извините
да
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
подумал, а в принципе, без разницы где запросить ввода, в консоли, Tkinter, PyQt5
как в Tkinter или PyQt5 сделать запрос на ввод чего-либо, чтобы окно и поле ввода с курсором были активными? спс
 

Форум IT Специалистов