第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ncurses 10,10 pad將addstr加到9、9時導致錯誤

ncurses 10,10 pad將addstr加到9、9時導致錯誤

冉冉說 2021-03-09 22:17:37
在聲明10 x 10填充后,我顯然無法正確地寫到右下角9、9。這里發(fā)生了什么?import cursesdef start(stdscr):    curses.curs_set(0)    movement = curses.newpad(10, 10)    movement.addstr(8, 9, '+')    movement.addstr(9, 8, '+')     movement.addstr(9, 9, '+') #This line causes an errorif __name__ == '__main__':    curses.wrapper(start)原因:  File "curses_movement_testing.py", line 35, in <module>    curses.wrapper(start)  File "/usr/lib64/python2.6/curses/wrapper.py", line 43, in wrapper    return func(stdscr, *args, **kwds)  File "curses_movement_testing.py", line 10, in start    movement.addstr(9, 9, '+')_curses.error: addstr() returned ERR為什么我不能寫右下角的單元格?
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

問題在于添加的字符會導致滾動鍵盤的嘗試,并且滾動被禁用。字符已成功添加(至少在我的系統(tǒng)的ncurses實現(xiàn)中):如果發(fā)現(xiàn)錯誤并更新了屏幕,則應該看到它:


import curses, time


def start(stdscr):

    curses.start_color()

    try:

        curses.curs_set(0)

    except curses.error:

        pass

    movement = curses.newpad(10, 10)


    movement.addstr(8, 9, '+')

    movement.addstr(9, 8, '+')

    try:

        movement.addstr(9, 9, '+')

    except curses.error:

        movement.addstr(0, 0, 'CAUGHT')

    movement.refresh(0, 0, 0, 0, 9, 9)

    curses.doupdate()

    time.sleep(1)


if __name__ == '__main__':

    curses.wrapper(start)

如果movement.scrollok(True)在寫到右下角之前先調(diào)用,則不會有任何錯誤,但窗口會滾動:可能不是您想要的。


由于墊板可能比實際屏幕大,因此一個簡單的解決方案是在要加工的零件下方添加一條額外的線refresh。您可以檢查是否已寫入不會顯示的部分。這是最后一個例子:


import curses, sys, time


def start(stdscr):

    curses.start_color()

    try:

        curses.curs_set(0)

    except curses.error:

        pass

    movement = curses.newpad(11, 10)


    movement.addstr(8, 9, '+')

    movement.addstr(9, 8, '+')

    text = sys.argv[1] if len(sys.argv) > 1 else '+'

    try:

        movement.addstr(9, 9, text)

        y, x = movement.getyx()

    except curses.error:

        y, x = movement.getyx()

        movement.addstr(0, 0, 'CAUGHT')

    if y >= 10 and x > 0:

        movement.addstr(1, 0, 'toolong')

    movement.refresh(0, 0, 0, 0, 9, 9)

    curses.doupdate()

    time.sleep(1)


if __name__ == '__main__':

    curses.wrapper(start)

運行為python cursesx.py,出現(xiàn)加號;運行為python cursesx.py foo,f并且toolong出現(xiàn)和消息;作為運行python cursesx.py waytoolongtofit和w,CAUGHT以及toolong消息的所有出現(xiàn)。


查看完整回答
反對 回復 2021-03-27
  • 1 回答
  • 0 關注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號