- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序,您可以在其中输入数字(很多),但键盘也是字母很难,我希望它只是数字 (0-9) 和一个点。有没有办法使用 Kivy 的 .kv 文件和 Python 来做到这一点?我在 .kv 文件中尝试了 input_type: 'number'
,但我无法让它工作。谢谢!
编辑:我也尝试过使用气泡,但没有成功。不过,如果可能的话,最好有一个气泡数字键盘。
编辑 2:我已经对这个问题提出了另一个悬赏,因为当我将 VKeyboard 放在物理设备上时(连同弹出窗口)它会坏掉。具体来说,VKeyboard 不会显示(并且在转到另一个 TextInput 字段后它也会崩溃)并且我的弹出窗口无法正确缩放。我的 logcat 如下所示。
10-21 08:30:23.944 11210 11233 I python : [INFO ] [Logger ] Record log in /data/user/0/org.test.bfcalc5/files/app/.kivy/logs/kivy_20-10-21_3.txt
10-21 08:30:23.944 11210 11233 I python : [INFO ] [Kivy ] v1.11.1
10-21 08:30:23.945 11210 11233 I python : [INFO ] [Kivy ] Installed at "/data/user/0/org.test.bfcalc5/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
10-21 08:30:23.946 11210 11233 I python : [INFO ] [Python ] v3.8.1 (default, Oct 18 2020, 14:08:48)
10-21 08:30:23.946 11210 11233 I python : [Clang 8.0.2 (https://android.googlesource.com/toolchain/clang 40173bab62ec7462
10-21 08:30:23.946 11210 11233 I python : [INFO ] [Python ] Interpreter at ""
10-21 08:30:25.540 11210 11233 I python : [INFO ] [Factory ] 184 symbols loaded
10-21 08:30:26.210 11210 11233 I python : [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
10-21 08:30:26.289 11210 11233 I python : [INFO ] [Text ] Provider: sdl2
10-21 08:30:26.387 11210 11233 I python : [INFO ] [Window ] Provider: sdl2
10-21 08:30:26.437 11210 11233 I python : [INFO ] [GL ] Using the "OpenGL ES 2" graphics system
10-21 08:30:26.439 11210 11233 I python : [INFO ] [GL ] Backend used <sdl2>
10-21 08:30:26.440 11210 11233 I python : [INFO ] [GL ] OpenGL version <b'OpenGL ES 3.2 build 1.10@5187610'>
10-21 08:30:26.440 11210 11233 I python : [INFO ] [GL ] OpenGL vendor <b'Imagination Technologies'>
10-21 08:30:26.441 11210 11233 I python : [INFO ] [GL ] OpenGL renderer <b'PowerVR Rogue GE8322'>
10-21 08:30:26.442 11210 11233 I python : [INFO ] [GL ] OpenGL parsed version: 3, 2
10-21 08:30:26.442 11210 11233 I python : [INFO ] [GL ] Texture max size <4096>
10-21 08:30:26.443 11210 11233 I python : [INFO ] [GL ] Texture max units <16>
10-21 08:30:26.482 11210 11233 I python : [INFO ] [Window ] auto add sdl2 input provider
10-21 08:30:26.484 11210 11233 I python : [INFO ] [Window ] virtual keyboard allowed, single mode, docked
10-21 08:30:26.756 11210 11233 I python : [INFO ] [GL ] NPOT texture support is available
10-21 08:30:26.818 11210 11233 I python : [WARNING] [Base ] Unknown <android> provider
10-21 08:30:26.819 11210 11233 I python : [INFO ] [Base ] Start application main loop
10-21 08:30:26.938 11210 11233 I python : [WARNING] [GL ] Unpack subimage support is not available
10-21 08:30:33.249 11210 11233 I python : [INFO ] [Base ] Leaving application in progress...
10-21 08:30:33.250 11210 11233 I python : Traceback (most recent call last):
10-21 08:30:33.250 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/app/main.py", line 88, in <module>
10-21 08:30:33.251 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/app.py", line 855, in run
10-21 08:30:33.253 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/base.py", line 504, in runTouchApp
10-21 08:30:33.255 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/core/window/window_sdl2.py", line 747, in mainloop
10-21 08:30:33.257 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/core/window/window_sdl2.py", line 479, in _mainloop
10-21 08:30:33.258 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/base.py", line 339, in idle
10-21 08:30:33.259 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/clock.py", line 591, in tick
10-21 08:30:33.260 11210 11233 I python : File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
10-21 08:30:33.261 11210 11233 I python : File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
10-21 08:30:33.261 11210 11233 I python : File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
10-21 08:30:33.262 11210 11233 I python : File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick
10-21 08:30:33.263 11210 11233 I python : File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback
10-21 08:30:33.264 11210 11233 I python : File "/home/ubuntu/BFCalcApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/bfcalc5/kivy/weakmethod.py", line 56, in is_dead
10-21 08:30:33.265 11210 11233 I python : ReferenceError: weakly-referenced object no longer exists
10-21 08:30:33.266 11210 11233 I python : Python for android ended.
编辑 3:多亏了 Fadi Abu Raid,我才能够解决弹出窗口问题。现在,我希望增加 VKeyboard 的尺寸,因为它在手机上非常小。我找到了 this发布,但我没有从中找到任何帮助。
最佳答案
我已经用这个例子完成了:
https://github.com/kivy/kivy/tree/master/examples/keyboard
你的 .kv 文件应该是这样的:
TextInput:
input_type: 'number'
on_focus: root.text_focused()
你应该有一个方法来调用你的 Python 文件中数字布局的键盘。
from kivy.uix.vkeyboard import VKeyboard
def text_focused(self):
VKeyboard.layout = 'numeric.json'
player = VKeyboard()
从上面的链接获取布局并将其保存在与脚本相同的文件夹中。
输出应该是这样的:
更新
发布后我找到了更好的解决方案 here .
但是它缺少我添加的一些功能:
您需要从here 下载arial-unicode-ms.ttf 字体并将字体放在与 main.py 脚本相同的文件夹中,以便能够在键盘上显示删除符号。
主.py
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.bubble import Bubble, BubbleButton
from kivy.lang import Builder
from kivy.core.window import Window
class CustomBubbleButton(BubbleButton):
def add_text(self):
app= App.get_running_app()
index=app.root.text_input.cursor[0]-1
if self.text!="⌫":
app.root.text_input.text= app.root.text_input.text[:index+1]+self.text + app.root.text_input.text[index+1:]
app.root.text_input.cursor=(index+2,0)
else:
app.root.text_input.text=app.root.text_input.text[:index] + app.root.text_input.text[index+1:]
app.root.text_input.cursor=(index,0)
pass
class NumericKeyboard(Bubble):
def on_touch_up(self, touch):
app= App.get_running_app()
if not self.collide_point(*touch.pos) and not app.root.text_input.collide_point(*touch.pos):
app.root.remove_widget(app.root.bubb)
app.root.text_input.focus=False
delattr(app.root, 'bubb')
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:
bubb_btn = CustomBubbleButton(text=str(x),font_name='arial-unicode-ms.ttf')
self.layout.add_widget(bubb_btn)
class BubbleShowcase(FloatLayout):
def show_bubble(self, *l):
if not hasattr(self, 'bubb'):
self.bubb = NumericKeyboard()
self.bubb.arrow_pos = "bottom_mid"
self.add_widget(self.bubb)
Builder.load_file("test.kv")
class TestBubbleApp(App):
title = "Numeric Key Pad - Using Bubble"
def build(self):
return BubbleShowcase()
if __name__ == '__main__':
Window.show_cursor = True
TestBubbleApp().run()
测试.kv
<CustomBubbleButton>:
on_release: root.add_text()
<NumericKeyboard>:
layout: layout
size_hint: (None, None)
size: (160, 120)
pos_hint: {'center_x': .5, 'y': .6}
GridLayout:
id: layout
cols: 3
<BubbleShowcase>:
text_input: text_input
canvas:
Color:
rgba: 0, 1, 1, 1
Rectangle:
size: self.width, self.height
TextInput:
id: text_input
keyboard_mode: 'managed'
pos_hint: {'center_x': .5, 'y': .54}
size_hint: (0.2, 0.06)
cursor_blink: True
font_size: 20
multiline: False
on_focus: root.show_bubble()
输出
关于python - 有没有一种方法可以使用 Kivy 和 Python 在 TextInput 字段中显示数字键盘(最好带有气泡)?代码的新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64196094/
我遇到了一个问题。我正在使用 pyinstaller 将代码导出到 .exe。代码包括 tkinter、PIL 和 keyboard 模块。软件在我使用 Python 的 PC 上运行完美,而在没有
我正在尝试将 STM32F0-disco 用作 Windows PC 的键盘。正在打印的字符有问题。 下面的代码等到板载按钮被按下,然后应该打印一次这三个字符。 /* USER CODE BE
我想在单击键盘上的“完成”按钮时退出键盘。我怎样才能做到这一点?我有以下代码=> textView.returnKeyType = UIReturnKeyDone; 我有这个代码用于限制 TextVi
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想调出一个用于输入电话号码的键盘。有没有办法在我自己的 Activity 中显示此对话框并捕获用户输入的内容。我需要能够控制用户点击调用时发生的情况。所以我很感兴趣自定义允许用户输入电话号码的 Ac
我希望软键盘位于我的布局之上,而不是在它弹出时四处移动我的布局。我该怎么做呢?我查看了 list ,但从未设置 android:windowSoftInputMode="adjustResize" 此
主题:将某些键替换为另一个键值。 例如如果我按 P,它应该是 F24。 当我尝试从 .ini 文件加载键值时, Hook 不再是全局的。它仅在 winapi 窗体处于焦点时才有效。 我的 DLL 代码
当我点击 EditText 时,是否可以用小写字母启动 android 键盘?基本上,我想要的是将 EditText 中的第一个字母小写,但也让用户可以根据需要将其变为大写...... (EditTe
我想监控 IOS 上的键盘隐藏按钮并触发一个事件。我在说: 我只想在用户按下实际按钮时进行监控。我不想要键盘隐藏时的事件。 最佳答案 用户键盘通知观察者.. 对于 swift NSNotificati
在经历了这一切之后就像认真的...... Easy way to dismiss keyboard? ...我有多个 TextFields 和一些 TextViews。有没有办法对所有文本字段进行批处
所以我想在我的应用程序中添加一个键盘,其中包含表情符号,就像 Whatsapp 或环聊一样。我怎样才能做到这一点?我想保留我的键盘,因为我只想添加标签来放置表情符号。我认为软键盘很容易支持它,但到目前
首先,我会让您知道,我在 StackOverflow 以及 Google 和 Github 上查看了很多很多不同的帖子。我已经到处寻找对我有帮助的任何。但是,似乎没有任何效果。它要么已经过时(超过 1
当按下相应的键时,我试图让我的游戏中的宇宙飞船 (PlayerShip.gif) 向左、向右、向上和向下移动。我知道我需要一个 keyboardListener 但我在弄清楚它的去向以及它是如何实际实
我正在尝试制作一个 HID USB 设备。我搜索了一下,发现键盘的输出有 8 个字节。第一个字节是修饰符,第二个字节是保留字节,其余 6 个字节是关键代码。我认为在某些情况下,例如“prtsc”,需要
我最近开始学习 Vim,在深入学习之前,我有一个问题需要回答。 使用 AZERTY 键盘,我是否应该重新映射命令和快捷方式的键以适应 QWERTY 键盘的键位置? 我之所以问这个,是因为显然在创建这些
我一直认为在使用 Dvorak 布局之前,我需要购买 Dvorak 键盘。但是我在亚马逊上找不到。仅仅是从 Qwerty 键盘上弹出键并移动它们吗? 最佳答案 为了帮助您了解键盘布局,您可以重新排列
我不敢相信我还没有找到任何关于此的文档,但我想知道如何命令键盘激活并接收来自它的输入。我可以找到在编辑文本字段时操作弹出键盘的所有示例。谢谢 最佳答案 您还可以使用 UIKeyInput 协议(pro
我有一个 UITextField,其中弹出的键盘已禁用其 Shift 键。键盘类型设置为 UIKeyboardTypeNamePhonePad,看起来应该允许大写。 如果我将键盘类型更改为“默认”但保
背景:我的表单有一个 TWebBrowser。我想用 ESC 关闭表单,但 TWebBrowser 吃掉了击键 - 所以我决定使用键盘 Hook 。 问题是表单可以同时在多个实例中打开。 无论我做什么
我需要(即客户要求)提供自定义键盘,供用户在文本字段和区域中输入文本。我已经有一些可以执行键盘操作并将测试附加到文本字段的东西,但是我想让它更通用并让它像标准的 iphone 键盘一样工作,即当用户选
我是一名优秀的程序员,十分优秀!