[英]Keypress not working for Edit widget in Urwid
我正在嘗試使用 Urwid 在 Python 中制作終端應用程序。
import urwid
class Guess():
def __init__(self):
self.guess = urwid.Edit(align='center')
def keypress(self, size, key):
if key.lower() == 'enter':
user_guess = self.guess.edit_text
self.guess.edit_text = " "
self.check_guess(user_guess)
這是我需要用戶輸入的部分,然后我需要將其發送到另一個函數。
keypress()
方法的文檔根本沒有幫助。 我查看了其他人的代碼,並使用上述方法進行了嘗試,以及我在網上沖浪時發現的其他一些方法,但沒有運氣。
有人可以向我解釋keypress()
方法的確切功能以及如何實現我想要的嗎?
urwid 是Python 的控制台用戶界面庫。
如果你想跟蹤 kyepress 試試下面,
pip install keyboard
導入鍵盤 # 使用模塊鍵盤
def keypress(self, size, key):
if keyboard.is_pressed('enter'):
user_guess = self.guess.edit_text
self.guess.edit_text = " "
self.check_guess(user_guess)
keypress 是 Edit 類的內部方法,這個
class Guess():
def __init__(self):
self.guess = urwid.Edit(align='center')
必須更改為此才能從 Edit 繼承
class Guess(urwid.Filler)
這是您自己的按鍵實現必須從 Edit 繼承,從
def keypress(self, size, key):
if key.lower() == 'enter':
對此
# keep same behavior as in keypress in Edit
return super(Guess, self).keypress(size, key)
整個程序會這樣
import urwid
def exit_on_q(key):
if key in ('q', 'Q'):
raise urwid.ExitMainLoop()
# class is inheritance of Filler class Edit
class Guess(urwid.Filler):
def keypress(self, size, key):
if key.lower() == 'enter':
# your own implementation of keypress after enter
user_guess = guess.edit_text
self.original_widget = urwid.Text('your guess: {}, Q(q)uit'.format(user_guess))
return
# keep same behavior as in keypress in Edit
return super(Guess, self).keypress(size, key)
# Edit(with internal keypress()
guess = urwid.Edit('guess who?', align='center')
filler = Guess(guess)
loop = urwid.MainLoop(filler, unhandled_input=exit_on_q)
loop.run()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.