我想撰寫一個允許同時使用文本輸入和鍵盤系結的程式。但是當我單擊文本輸入小部件時,會發生錯誤。如何重寫代碼使其不存在?(問題與python kivy有關)
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.textinput import TextInput
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
class MyApp(App):
def build(self):
self.my_keyboard = Window.request_keyboard(self.my_keyboard_down, self.root)
self.my_keyboard.bind(on_key_down=self.my_keyboard_down)
widget = FloatLayout()
text_input = TextInput(multiline=False)
widget.add_widget(text_input)
print_text = lambda arg: print(text_input.text)
widget.add_widget(Button(on_press = print_text, size_hint = [0.2, 0.2], text = 'press pls'))
return widget
def my_keyboard_down(self, keyboard, keycode, text, modifiers):
if keycode[1] == 'escape': quit()
if keycode[1] == 'right': print('right')
if keycode[1] == 'left': print('left')
if __name__ == '__main__':
MyApp().run()
uj5u.com熱心網友回復:
出于某種原因,當您單擊 時TextInput,TextInput呼叫您的 my_keyboard_down(),但沒有引數。my_keyboard_down()您可以通過使用變數 args定義您的來解決此問題:
# def my_keyboard_down(self, keyboard, keycode, text, modifiers):
def my_keyboard_down(self, *args):
if len(args) == 0:
return
else:
keyboard = args[0]
keycode = args[1]
text = args[2]
modifiers = args[3]
if keycode[1] == 'escape': quit()
if keycode[1] == 'right': print('right')
if keycode[1] == 'left': print('left')
我懷疑這是TextInput.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/456506.html
