python-2.7 - Python:获取动态TextInput的ID
问题描述
我正在使用python-2.7
和kivy
。我运行test.py
然后屏幕看起来像附加的图像。当我点击ok
按钮然后我试图id
使用TextInput
这个代码。
for row in reversed(rows.children):
for ch in reversed(row.children):
if isinstance(ch, TextInput):
print(ch.id)
if ch.text == "" and ch.id=='test1':
print("TextInput is required")
ch.focus = True
break;
但是print(ch.id)
显示None
。有人可以告诉我如何获取id
textInput 吗?
如果我能得到id
,那么我可以忽略value2
空白值。
测试.py
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
Window.size = (450, 525)
class display(Screen):
def add_more(self):
self.ids.rows.add_row()
def insert(self):
values = []
rows = self.ids.rows
for row in reversed(rows.children):
for ch in reversed(row.children):
if isinstance(ch, TextInput):
print(ch.id)
if ch.text == "" and ch.id=='test1':
print("TextInput is required")
ch.focus = True
break;
class Row(BoxLayout):
button_text = StringProperty("")
def count_row(self):
print('count row')
class Rows(BoxLayout):
orientation = "vertical"
row_count = 0
def __init__(self, **kwargs):
super(Rows, self).__init__(**kwargs)
self.add_row()
def add_row(self):
self.row_count += 1
self.add_widget(Row(button_text=str(self.row_count)))
class test(App):
def build(self):
return self.root
test().run()
测试.kv
<Row>:
test1 : test1
test2 : test2
orientation: "horizontal"
spacing: 0, 5
Button:
text: root.button_text
size_hint_x: .2
TextInput:
id : test1
size_hint_x: .4
TextInput:
id : test2
size_hint_x: .4
display:
BoxLayout:
orientation: "vertical"
padding : 20, 20
BoxLayout:
orientation: "horizontal"
Button:
size_hint_x: .2
text: "+Add More"
valign: 'bottom'
on_press: root.add_more()
BoxLayout:
orientation: "horizontal"
Label:
size_hint_x: .2
text: "SN"
valign: 'bottom'
Label:
size_hint_x: .4
text: "Value1"
valign: 'bottom'
Label:
size_hint_x: .4
text: "Value2"
valign: 'bottom'
Rows:
id: rows
BoxLayout:
orientation: "horizontal"
padding : 10, 0
spacing: 10, 10
size_hint: .5, .7
pos_hint: {'x': .25, 'y':.25}
Button:
text: 'Ok'
on_release:
root.insert()
Button:
text: 'Cancel'
on_release: root.dismiss()
解决方案
来自https://kivy.org/docs/api-kivy.uix.widget.html:
id Added in 1.0.0
Unique identifier of the widget in the tree.
id is a StringProperty and defaults to None.
你可以自己分配一个运行ID ...
推荐阅读
- c - 从 2d char 数组指针中获取一个字符,该指针是 C 中结构指针的属性
- webpack - 如何使用 webpack-cli init 指定 webpack 配置文件名?
- javascript - jQuery如何找到存储在数组中的最后一个HTML元素
- virtocommerce - Virto Commerce 无法在 B2B 主题中添加报价功能
- python-3.x - Calling vcvarsall.bat in Python and using its env variables
- javascript - Connecting to Neo4j with Javascript (without drivers)
- sql - SQL Server 2008 Update multiple columns with loop or other method
- laravel - 试图在招摇 UI 中创建一个包含多个项目的数组
- powershell - 如何将bios serialmunber设置为用户密码
- python - 如何将文本文件中的最大值附加到列表中?