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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python – 在無緩沖的標(biāo)準(zhǔn)輸入上選擇

Python – 在無緩沖的標(biāo)準(zhǔn)輸入上選擇

米琪卡哇伊 2022-10-18 16:14:51
我真的在為 python3 中的緩沖而苦苦掙扎。我正在嘗試實(shí)現(xiàn)一個(gè)簡(jiǎn)單的收音機(jī)。我有一個(gè)接收器類。它向用戶顯示可用的電臺(tái)。這些電臺(tái)是動(dòng)態(tài)的,因此它們會(huì)出現(xiàn)和消失。Welcome to the radio, select station you want to listen to.> 1) Rock Station  2) Hip Hop Station  3) Country Station所以接收器必須同時(shí)等待輸入:來自管道(關(guān)于新站顯示/消失的信息)和來自標(biāo)準(zhǔn)輸入(用戶可以使用向上和向下箭頭來更改站)。此外,當(dāng)用戶使用箭頭鍵更改電臺(tái)時(shí),我必須一次從標(biāo)準(zhǔn)輸入讀取一個(gè)字符。這就是標(biāo)準(zhǔn)select.select不起作用的原因(它等待用戶按 ENTER 鍵):class _GetchUnix:    def __init__(self):        import tty, sys    def __call__(self):        import sys, tty, termios        fd = sys.stdin.fileno()        old_settings = termios.tcgetattr(fd)        try:            tty.setraw(sys.stdin.fileno())            ch = sys.stdin.read(1)        finally:            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)        return chself.char_reader = _GetchUnix()[...]def __read_order_from_user(self,):    k = self.char_reader()    # Check for up/down arrow keys.    if k == '\x1b':        k = self.char_reader()        if k != '[':            return        k = self.char_reader()        if k == 'A':            self.__arrow_down()        if k == 'B':            self.__arrow_up()    # And check for enter key.    if k == '\r':        self.menu[self.option].handler()def __update_stations(self,):    [...]def run(self):    self.display()    while True:        rfds, _, _ = select.select([pipe, sys.stdin], [], [])        if pipe in rfds:                self.__update_stations()        if sys.stdin in rfds:            self.__read_order_from_user()我在互聯(lián)網(wǎng)上找到了如何從標(biāo)準(zhǔn)輸入中逐個(gè)讀取字符:Python 從用戶讀取單個(gè)字符 并且它確實(shí)有效,但與select.select.
查看完整描述

1 回答

?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

我在此處粘貼來自 VPfB 評(píng)論的解決方案:

"raw tty 模式打開到只讀取一個(gè)字符然后關(guān)閉。當(dāng) select 處于活動(dòng)狀態(tài)時(shí),它被關(guān)閉,因?yàn)樵?select 之后調(diào)用了獲取一個(gè)字符的例程。你應(yīng)該打開 raw tty在選擇循環(huán)之前輸入,退出循環(huán)后恢復(fù) tty 設(shè)置。”


查看完整回答
反對(duì) 回復(fù) 2022-10-18
  • 1 回答
  • 0 關(guān)注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)