Kivy 屏幕外的文本输入如何清晰
How clear textinput after out of screen in Kivy
我尝试清除 textinput 中的文本,但在访问 texinput 属性时遇到问题。我想在释放按钮 Acceppt 并离开 InputScreen 后清除文本 (entry.text)。我发现 get_screen() 可以设置属性,但我现在不知道如何将它与 kivy-language
一起使用
ScreenManagement:
id: screen_manager
transition: FadeTransition()
MainScreen:
id: main_screen
name: "main"
manager: screen_manager
numberSet1: input_screen.number1
numberSet2: input_screen.number2
numberSet3: input_screen.number3
InputScreen:
id: input_screen
name: "input"
manager: screen_manager
textIdToReturn: main_screen.textName
<InputScreen>:
NawiButton:
tempNumber: key_board.entryText
pos: root.width - 100 - 0.25 * root.width, 10
text: "Acceppt"
on_release: root.saveValue(root.textIdToReturn, self.tempNumber)
background_normal: ''
background_color: .3, 1, .4, .85
KeyBoardGridLayout:
id: key_board
name: "KeyBoard"
<KeyBoardGridLayout>:
rows: 5
padding: [100, 10, 100, 100]
spacing: 3
entryText: entry.text
BoxLayout:
TextInput:
id: entry
font_size: 45
multiline: False
on_text: root.update_padding(args[0])
padding_x: self.width/2
BoxLayout:
spacing: 3
KeyBoardButton:
text: "1"
on_press: entry.text = root.addText(entry.text, self.text)
KeyBoardButton:
text: "2"
on_press: entry.text = root.addText(entry.text, self.text)
KeyBoardButton:
text: "3"
on_press: entry.text = root.addText(entry.text, self.text)
MainScreenclass,不过我觉得不重要:
<MainScreen>:
BoxLayout:
orientation: "vertical"
spacing: 50
padding: [300, 50, 300, 50]
Button:
text: root.numberSet1
id: textNum1
name: textNum1
font_size: 45
on_release:
root.touch("textNum1")
在 kv 文件中,在 InputScreen:
处使用 on_leave
或 on_pre_leave
事件来清除文本 (entry.text)。
Events:
on_pre_leave: ()
Event fired when the screen is about to be
removed: the leaving animation is started.
on_leave: ()
Event fired when the screen is removed: the
leaving animation is finished.
片段
ScreenManagement:
id: screen_manager
transition: FadeTransition()
MainScreen:
id: main_screen
name: "main"
manager: screen_manager
numberSet1: input_screen.number1
numberSet2: input_screen.number2
numberSet3: input_screen.number3
InputScreen:
id: input_screen
name: "input"
manager: screen_manager
textIdToReturn: main_screen.textName
on_leave:
root.ids.input_screen.key_board.ids.entry.text = ''
...
<InputScreen>:
key_board: key_board
备注
kv 文件 - ObjectProperty 和 id
key_board: key_board
表示名为 key_board 的 ObjectProperty 指向(连接)到 KeyBoardGridLayout的id, key_board.
entry
它是一个 id 和 TextInput 小部件的弱引用。
entry.text
它引用了 TextInput 的 text 的值。
entryText: entry.text
entryText 是 KeyBoardGridLayout 的 属性。如果小部件没有具有给定名称的 属性,则会自动创建一个 ObjectProperty 并将其添加到小部件。 entryText 赋值为 entry.text
我尝试清除 textinput 中的文本,但在访问 texinput 属性时遇到问题。我想在释放按钮 Acceppt 并离开 InputScreen 后清除文本 (entry.text)。我发现 get_screen() 可以设置属性,但我现在不知道如何将它与 kivy-language
一起使用ScreenManagement:
id: screen_manager
transition: FadeTransition()
MainScreen:
id: main_screen
name: "main"
manager: screen_manager
numberSet1: input_screen.number1
numberSet2: input_screen.number2
numberSet3: input_screen.number3
InputScreen:
id: input_screen
name: "input"
manager: screen_manager
textIdToReturn: main_screen.textName
<InputScreen>:
NawiButton:
tempNumber: key_board.entryText
pos: root.width - 100 - 0.25 * root.width, 10
text: "Acceppt"
on_release: root.saveValue(root.textIdToReturn, self.tempNumber)
background_normal: ''
background_color: .3, 1, .4, .85
KeyBoardGridLayout:
id: key_board
name: "KeyBoard"
<KeyBoardGridLayout>:
rows: 5
padding: [100, 10, 100, 100]
spacing: 3
entryText: entry.text
BoxLayout:
TextInput:
id: entry
font_size: 45
multiline: False
on_text: root.update_padding(args[0])
padding_x: self.width/2
BoxLayout:
spacing: 3
KeyBoardButton:
text: "1"
on_press: entry.text = root.addText(entry.text, self.text)
KeyBoardButton:
text: "2"
on_press: entry.text = root.addText(entry.text, self.text)
KeyBoardButton:
text: "3"
on_press: entry.text = root.addText(entry.text, self.text)
MainScreenclass,不过我觉得不重要:
<MainScreen>:
BoxLayout:
orientation: "vertical"
spacing: 50
padding: [300, 50, 300, 50]
Button:
text: root.numberSet1
id: textNum1
name: textNum1
font_size: 45
on_release:
root.touch("textNum1")
在 kv 文件中,在 InputScreen:
处使用 on_leave
或 on_pre_leave
事件来清除文本 (entry.text)。
Events:
on_pre_leave: ()
Event fired when the screen is about to be removed: the leaving animation is started.
on_leave: ()
Event fired when the screen is removed: the leaving animation is finished.
片段
ScreenManagement:
id: screen_manager
transition: FadeTransition()
MainScreen:
id: main_screen
name: "main"
manager: screen_manager
numberSet1: input_screen.number1
numberSet2: input_screen.number2
numberSet3: input_screen.number3
InputScreen:
id: input_screen
name: "input"
manager: screen_manager
textIdToReturn: main_screen.textName
on_leave:
root.ids.input_screen.key_board.ids.entry.text = ''
...
<InputScreen>:
key_board: key_board
备注
kv 文件 - ObjectProperty 和 id
key_board: key_board
表示名为 key_board 的 ObjectProperty 指向(连接)到 KeyBoardGridLayout的id, key_board.
entry
它是一个 id 和 TextInput 小部件的弱引用。
entry.text
它引用了 TextInput 的 text 的值。
entryText: entry.text
entryText 是 KeyBoardGridLayout 的 属性。如果小部件没有具有给定名称的 属性,则会自动创建一个 ObjectProperty 并将其添加到小部件。 entryText 赋值为 entry.text