python诅咒中的连续更新字符串
为了学习诅咒,我编写了这个脚本,让用户输入两个数字,然后输出它们的和和和差:python诅咒中的连续更新字符串,python,curses,Python,Curses,为了学习诅咒,我编写了这个脚本,让用户输入两个数字,然后输出它们的和和和差: import curses screen = curses.initscr() screen.refresh() height = 4 width = 25 abwindow = curses.newwin(height, width, int(0.15*int(curses.LINES)), int(curses.COLS/2) - width) abwindow.addstr(1, 2, "a is : ")
import curses
screen = curses.initscr()
screen.refresh()
height = 4
width = 25
abwindow = curses.newwin(height, width, int(0.15*int(curses.LINES)), int(curses.COLS/2) - width)
abwindow.addstr(1, 2, "a is : ")
abwindow.addstr(2, 2, "b is : ")
abwindow.border()
abwindow.refresh()
sumdiffwindow = curses.newwin(height, width, int(0.15*int(curses.LINES)), int(curses.COLS/2))
sumdiffwindow.addstr(1, 2, "a + b is : ")
sumdiffwindow.addstr(2, 2, "a - b is : ")
sumdiffwindow.border()
sumdiffwindow.refresh()
atocheck = abwindow.getstr(1, 10, 7)
btocheck = abwindow.getstr(2, 10, 7)
try:
a = float(atocheck)
b = float(btocheck)
sum = a + b
diff = a - b
sumdiffwindow.addstr(1, 14, "%g" %(sum))
sumdiffwindow.addstr(2, 14, "%g" %(diff))
except ValueError:
sumdiffwindow.addstr(1, 14, "nan")
sumdiffwindow.addstr(2, 14, "nan")
sumdiffwindow.refresh()
curses.curs_set(0)
while True:
curses.noecho()
c = screen.getch(1, 1)
if c == ord('q') or c == ord('Q'):
break
curses.endwin()
一旦输入了两个数字(如果它们是数字),它就会计算和和和差,然后它会一直闲置,直到用户按“q”返回终端。如何更改它,以便在连续显示其当前和和差的同时,可以根据需要更新
a
和b
(使用键盘上下箭头在两个输入框之间导航)?您可以通过将窗口超时设置为较小的值,例如10(毫秒)来完成此操作。如果使用nodelay
,则箭头键不起作用
这样做会使
getch
在短时间后返回(可能有错误…)。完成后,更新屏幕的其他部分,然后返回,请求getch
输入,直到返回有效的内容(如向上箭头键)。我对诅咒也不熟悉,但我尝试了一些帮助。
显示结果后,如果按除q
以外的任何键,所有键都将像开始一样更新。但是,如果按q
,代码将退出
import curses
import time
import sys
def main():
screen = curses.initscr()
screen.refresh()
height = 4
width = 25
abwindow = curses.newwin(height, width, int(0.15*int(curses.LINES)), int(curses.COLS/2) - width)
abwindow.addstr(1, 2, "a is : ")
abwindow.addstr(2, 2, "b is : ")
abwindow.border()
abwindow.refresh()
sumdiffwindow = curses.newwin(height, width, int(0.15*int(curses.LINES)), int(curses.COLS/2))
sumdiffwindow.addstr(1, 2, "a + b is : ")
sumdiffwindow.addstr(2, 2, "a - b is : ")
sumdiffwindow.border()
sumdiffwindow.refresh()
curses.echo()
atocheck = abwindow.getstr(1, 10, 7)
btocheck = abwindow.getstr(2, 10, 7)
try:
a = float(atocheck)
b = float(btocheck)
sum = a + b
diff = a - b
sumdiffwindow.addstr(1, 14, "%g" %(sum))
sumdiffwindow.addstr(2, 14, "%g" %(diff))
except ValueError:
sumdiffwindow.addstr(1, 14, "nan")
sumdiffwindow.addstr(2, 14, "nan")
sumdiffwindow.refresh()
curses.curs_set(0)
curses.noecho()
c = screen.getch(1, 1)
if c == ord('q') or c == ord('Q'):
sys.exit()
while True:
main()
我认为我没有足够的经验来充分理解您提出的解决方案,您能发布一个工作示例吗?我对
诅咒
没有经验,但我认为您必须使用窗口。超时(延迟)
,如下所示:@noibe