textfield
在可以将任何文本输入到textfield1
TextField之前,您将变量设置为字段的文本。
如果您只是将 textfield1 设置为v['textfield1']
然后.text
在您的函数中使用它,它将button_pushed
起作用。
def button_pushed(sender):
if contains_digits(textfield1.text):
print(textfield1.text)
return
print('failed')
v=ui.load_view()
textfield1 = v['textfield1']
v.present('fullscreen')
这是因为,它不是在启动时将文本设置为字段中的内容,而是等到您收到该字段已更改的通知(假设是在调用 button_pushed时)。
但是,最好的方法是使用sender
button_pushed 接收的变量。假设您已将 TextField 设置textfield1.action
为button_pushed函数,则sender应该是TextField,以便您可以执行以下操作:
def button_pushed(sender):
if contains_digits(sender.text):
print(sender.text)
return
print('failed')
(注意你的代码中设置了button_pushed的方式,即使打印半数字文本也会一直打印。打印成功后还需要a。)failed
return
我知道有两种方法可以将 TextField 设置为调用函数(或方法)作为其在 Pythonista 中的操作。最简单的可能是在您的代码中设置它。
v=ui.load_view()
textfield1 = v['textfield1']
textfield1.action = button_pushed
v.present('fullscreen')
另一种方法是在 UI 文件中设置它。当您在 UI 编辑器中选择了 TextField 并查看 TextField 的设置时(在我写这篇文章时,右上角的“i”按钮会显示设置),最底部的设置是“CUSTOM ATTRIBUTES” . 将自定义属性设置为:
{'action':button_pushed}
一旦您进行了这些更改中的任何一个,那么只要文本字段完成编辑(例如,通过按“返回”或将焦点移动到另一个字段),就会调用该操作。当然,如果您这样做并且结果是您想要的行为,您可能希望将函数的名称从button_pushed 更改为更能描述何时或为何调用该函数的名称。
您可能还希望将 TextField 的名称从其默认的“textfield1”更改为更能描述其用途的名称,以便在您使用多个字段时使您的代码更易于遵循。