Python - 检查 ui 文本字段内的整数

标签 python ios pythonista

在适用于 iOS 的 pythonista 应用程序中,当我按下按钮时,我试图检查 ui 中的文本字段是否包含任何数字。当我在字符串上使用相同的代码时,它会起作用。当我在按钮的操作中使用文本字段的代码时,它不起作用。请帮忙?这是我的代码:

import ui
import console

def contains_digits(d):
 for char in d:
  if char.isdigit():
   return True
  return False

test='test3'
print(contains_digits(test)) #this works - it prints TRUE!

#below always prints failed even though it should print whatever is in the textfield?!

def button_pushed(sender):
  if contains_digits(textfield1):
   print(textfield1)
  print('failed')

v=ui.load_view()
textfield1 = str(v['textfield1'].text)
v.present('fullscreen')

最佳答案

在可以将任何文本输入到 textfield1 TextField 之前,您将变量 textfield 设置为字段的文本。

如果您只是将 textfield1 设置为 v['textfield1'],然后在您的 button_pushed 中获取 .text,它将起作用> 功能。

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 时) .

但是,最好的方法是使用 button_pushed 接收的 sender 变量。假设您已经设置了 TextField,以便 textfield1.actionbutton_pushed 函数,sender 应该是 TextField,这样您就可以:

def button_pushed(sender):
  if contains_digits(sender.text):
   print(sender.text)
   return
  print('failed')

(请注意,button_pushed 在您的代码中设置的方式,它将始终打印失败,即使它也打印半-数字文本。打印成功后还需要一个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”更改为更能描述其用途的名称,以便在您有多个字段要使用时更容易理解您的代码。

关于Python - 检查 ui 文本字段内的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934439/

相关文章:

ios - 关于 iOS 应用程序结构和混合 Obj-C、标准 C、C++ 等的一般问题

python - Pythonista 如何在 App Store 限制下工作?

python - 安装 discord.py 1.0 时遇到问题

python - 尝试绘制定义的函数

python - 仅当所有相似值都有效时,pandas 才会更新数据框

ios - 如何子类化 UICollectionViewFlowLayout 以便可以覆盖 layoutAttributesForElementsInRect

ios - 延迟 ios 后导航到下一个 View Controller

python - 在iOS/Pythonista上运行Scrapy吗?

python - 从具有特定索引的python列表中挑选项目

python - 使用居中 .rolling() 后,用第一个计算总和替换 Pandas DataFrame 列中的 NaN 值