для моего мастерства я работаю с пакетами vmtk и vtk. В настоящее время я пытаюсь выяснить, как предложить пользователю ввести строку в vtkRenderWindow. К сожалению, в vtk нет ни встроенного метода, ни практического примера кода для достижения этой цели. К счастью, более или менее, пакет vmtk предлагает такую функцию. Поскольку это в конечном итоге станет более базовым c вопросом, чем кажется сейчас, я не думаю, что вообще нужно знать пакет vmtk, чтобы относиться к моему вопросу.
Исходный код функции соответствующей функциональности в vmtk выглядит следующим образом:
def InputText(self,prompt='',validator=None):
self.OutputText(prompt)
try:
self.InputStream.prompt(prompt)
except:
pass
text = self.InputStream.readline()
if text:
text = text.rstrip('\n')
if validator:
while not validator(text):
self.OutputText(prompt)
try:
self.InputStream.prompt(prompt,info=False)
except:
pass
text = self.InputStream.readline()
if text:
text = text.rstrip('\n')
return text
Валидатор является побочной функцией для проверки ввода и не интересует нас и этот момент. self.InputStream определяется в init как: self.InputStream = sys.stdin
На данный момент это расстраивает, по крайней мере, для меня. И позвольте мне сказать, что я совсем не опытный программист, в лучшем случае средний.
Для чтения строки и удаления части мне кажется логичным. Он в основном читает строку / слово, которое было введено в InputStream, и удаляет символ новой строки.
Моя проблема в том, что вызывается подсказка «подфункция». Этот атрибут не существует для sys.stdin ... И я уверен, что это именно та функция, которую я ищу.
Так есть ли способ переопределить основные функции c в python? Потому что, если этот атрибут не существует во встроенном пакете sys, он должен быть добавлен или переопределен где-то в скрипте или импортированных скриптах (а я не могу его найти).