<p>不能将小部件添加到文本输入,因为它不是布局。您应该将文本输入添加到布局中,然后将气泡添加到此布局中。试试这个:</p>
<pre><code>from kivy.app import App
from kivy.uix.bubble import Bubble
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
Builder.load_string('''
<NumericKeyboard>
size_hint: (None, None)
size: (160, 120)
pos_hint: {'center_x': .5, 'y': .6}
BubbleButton:
text: 'Cut'
BubbleButton:
text: 'Copy'
BubbleButton:
text: 'Paste'
''')
class NumericKeyboard(Bubble):
pass
class CustomTextInputLayout(FloatLayout):
def __init__(self, **kwargs):
super(CustomTextInputLayout, self).__init__(**kwargs)
self.add_widget(CustomTextInput(self))
class CustomTextInput(TextInput):
def __init__(self, layout,**kwargs):
super(CustomTextInput, self).__init__(**kwargs)
self.layout = layout
def on_focus(self, instance, value):
self.bubb = NumericKeyboard()
self.layout.add_widget(self.bubb)
class MyTestApp(App):
def build(self):
return CustomTextInputLayout()
if __name__ == '__main__':
MyTestApp().run()
</code></pre>