Итак, я создаю небольшую программу на python, которая запускает другие программы с помощью функции subprocess.call()
.Мне интересно, есть ли способ создать интерактивные блоки в CLI, чтобы помочь пользователю узнать, какая у него опция, и упростить их выбор.
В настоящее время я просто использую функции input()
с if/elif/else
функциями, чтобы определить, что запускать.Я хотел бы преобразовать это в интерактивный интерфейс в интерфейсе командной строки, чтобы не требовалось ничего, кроме щелчка.
Это то, что я сейчас использую.Не удалось найти какой-либо материал о такой опции, возможно, я не выгляжу достаточно усердно.
import getpass
import subprocess
import os
OSPath = "/SYS64 3.7/"
full_path = os.getcwd()
CurrentPath = ""
dir_path = os.path.dirname(os.path.realpath(__file__))
answer = input("INPUT BOOT PARAMETER ")
if answer == "jdos":
subprocess.call(["python3",dir_path + OSPath + "bootthingy.py"])
subprocess.call(["python3",dir_path + OSPath + "jdosos.py"])
elif answer == "jdos.fboot":
subprocess.call(["python3",full_path + OSPath + "jdosos.py"])
elif answer == "jdos.admin":
user = getpass.getpass("username: ")
password = getpass.getpass("password: ")
bootcheck = 0
with open('userpass.txt', 'r') as file:
for line in file:
line = line.strip('\n')
login = line.split(',')
if login[0] == user and login[1] == password:
subprocess.call(["python3",full_path + OSPath + "jdososadmin.py"])
bootcheck = 1
if bootcheck == 0:
print("Incorrect user or password.")
elif "jdos.exp" in answer:
subprocess.call(["python3",full_path + OSPath + "jdosexperimentail.py"])
elif answer == "cancel":
print("")
else:
print("invalid")
Вместо того, чтобы пользователь вводил jdos
в input()
, у вас было бы 4 интерактивных поляиз 4-х различных вариантов, что-то вроде этого: [jdos] [jdos.fboot] [jdos.admin] [jdos.exp]
, каждый из которых запускает subprocess.call()
при нажатии
Я пытался использовать пакет npyscreen
, но я не былв состоянии заставить его работать успешно
Вот как это выглядит, когда я использую прилагаемый код npyscreen
.
Код NPYScreen работает!
и вот что происходит, когда я выбираю поле и нажимаю OK
Программа Python не запускается должным образом ...
Как видите, программа работает,он просто перезаписывает текст в самом верху, и я не могу ничего ввести в функцию input('C:/SYS64 3.7> ')
, что, я думаю, могло бы быть сделано, чтобы приложение npyscreen
не закрывалось.Я все еще новичок в npyscreen
, и я не знаю точно, как это работает.