<p>是的,可以使用Kivy Bubble for TextInput小部件显示数字键盘。详情请参考下面的例子。在</p>
<p><strong><em>注意:</em></strong>文本输入不会被过滤。在</p>
<h2>示例</h2>
<h2>在主.py在</h2>
<pre><code>from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.bubble import Bubble, BubbleButton
from kivy.uix.label import Label
from kivy.properties import ObjectProperty
from kivy.lang import Builder
class CustomBubbleButton(BubbleButton):
pass
class NumericKeyboard(Bubble):
layout = ObjectProperty(None)
def __init__(self, **kwargs):
super(NumericKeyboard, self).__init__(**kwargs)
self.create_bubble_button()
def create_bubble_button(self):
numeric_keypad = ['7', '8', '9', '4', '5', '6', '1', '2', '3', '', '0', '.']
for x in numeric_keypad:
if len(x) == 0:
self.layout.add_widget(Label(text=""))
else:
bubb_btn = CustomBubbleButton(text=str(x))
self.layout.add_widget(bubb_btn)
class BubbleShowcase(FloatLayout):
text_input = ObjectProperty(None)
def show_bubble(self, *l):
if not hasattr(self, 'bubb'):
self.bubb = bubb = NumericKeyboard()
self.bubb.arrow_pos = "bottom_mid"
self.add_widget(bubb)
Builder.load_file("test.kv")
class TestBubbleApp(App):
title = "Numeric Key Pad - Using Bubble"
def build(self):
return BubbleShowcase()
if __name__ == '__main__':
TestBubbleApp().run()
</code></pre>
<h2>在试验电压在</h2>
^{pr2}$
<h2>输出</h2>
<p><a href="https://i.stack.imgur.com/czncv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/czncv.png" alt="Figure 1 - App Startup"/></a>
<a href="https://i.stack.imgur.com/0juYC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/0juYC.png" alt="Figure 2 - Bubble Numeric Key Pad on_focus TextInput"/></a>
<a href="https://i.stack.imgur.com/BY5Cf.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BY5Cf.png" alt="Figure 3 - Pressed Digit 3"/></a>
<a href="https://i.stack.imgur.com/PPyj3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PPyj3.png" alt="Figure 4 - Pressed Decimal Point"/></a>
<a href="https://i.stack.imgur.com/cxm5Z.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/cxm5Z.png" alt="Figure 5 - Pressed Digits 1, 4, `, 5, and 9"/></a></p>