如何解决在python的终端中插入输入时更改图标
我正在使用python在终端中创建一个登录面板,我想在输入之前动态更改图标,即,每当用户填充输入时,图标就会更改。
示例:
F:\command_line>python main.py
? username: # initially there is a question mark.
✓ username: # If the user fills the username the icon changes to ✓
我尝试过:
default = '?'
onChange = '✓'
inp = input(default + " " + name + ":")
# I can't figure out how I can change it
是否可以这样做?如果是这样,我该如何实现?
解决方法
我不会介绍整个过程,但是@PranavHosangadi提供的链接是很好的资源。
似乎您正在使用Windows,因此curses
模块无法立即使用。但是,您可以pip install windows-curses
来获取大部分功能。尽管我已经注意到curses.KEY_BACKSPACE
之类的某些常量在Windows版本上有所不同,但是您可以摆弄它并确定哪种对您有用。
# The module you'll use
import curses
# this is the char value that backspace returns on windows
BACKSPACE = 8
# our main function
def main(stdscr):
# this is just to initialize the input position
inp = '? Username:'
stdscr.addstr(1,1,inp)
# The input from the user will be assigned to
# this variable
current = ''
# our main method of obtaining user input
# it essentially returns control after the
# user inputs a character
# the return value is essentially what ord(char) returns
# to get the actual character you can use chr(char)
k = stdscr.getch()
# break the loop when the x key is pressed
while chr(k) != 'x':
# remove characters for backspace presses
if k == BACKSPACE:
if len(current):
current = current[:len(current) - 1]
# only allow a max of 8 characters
elif len(current) < 8:
current = current + chr(k)
# when 8 characters are entered,change the sign
if len(current) == 8:
inp = '! Username:'
else:
inp = '? Username:'
# not clearing the screen leaves old characters in place
stdscr.clear()
# this enters the input on row 1,column 1
stdscr.addstr(1,inp + current)
# get the next user input character
k = stdscr.getch()
if __name__ == '__main__':
# our function needs to be driven by curses.wrapper
curses.wrapper(main)
一些资源:
Some helpful examples 这一部分只有Linux部分,但经过反复试验,这些部分是显而易见的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。