当前我的代码如下:
x = []
for j in range(jmx):
x.append([])
for i in range(imx):
x[j].append(float(0))
我想要实现的是,当我按12345时,登录屏幕消失,并弹出一个新屏幕。我有以下想要实现的格式。
编辑:
答案 0 :(得分:0)
不确定要达到所需结果的精确程度,但是只需将“ kv”更改为:
<KeypadTextInput@TextInput>:
keypad: None
on_focus: root.keypad._on_focus(*args)
BoxLayout:
orientation: 'vertical'
KeypadTextInput:
keypad: keypad
Keypad:
id: keypad
size_hint_x: 0.5
pos_hint: {'center_x': 0.5}
答案 1 :(得分:0)
首先,关于焦点问题,我认为这取决于您如何加载屏幕。是您的根窗口小部件还是您加载的屏幕? 由于您看起来像是某种根小部件,因此您可能希望在启动应用程序时执行此操作。您可以为此使用“ on_start”事件
class MyApp(App):
def on_start(self,*args):
self.ids.mytextinput.focus = True #replace mytextinput with whatever id name you give to your text input in the kv string
对于文本输入触发事件,当您键入一定数量的数字时,可以使用on_text。为此,我认为最好是实例化自己的课程。
class KeyPadTextInput(TextInput):
def on_text(self,*args):
if len(self.text)==3:
#put your python code here
#you can launch MyApp functions by using app.function_name()
我注意到的另一件事是您使用on_focus来触发具有相同* args的'_on_focus'事件。您可以通过从kv字符串中删除on_focus并调整类on_focus事件,调用super()。on_focus(* args)来实现相同的目的,因此继承的函数也将这样触发:
class KeyPadTextInput(TextInput):
def on_focus(self,*args):
#your code either before the super call
super().on_focus(*args)
#or your code after the super call
希望能帮助您指出正确的方向。
PS。 TextInputs有一些预先构建的输入过滤器,例如过滤器,因此您只能输入数字!如果用户键盘抬起或者他们也可以访问一个键盘,这将很方便。 在kv字符串中只需添加
input_filter: 'int'