2016-02-19 117 views
0

我想在基维的TextInput中编辑文本,但不知道如何,我试过这段代码,因为我在网上搜索,但仍然没有运气。Kivy - 如何访问python中的kivy部件?

class MainApp(Screen): 
    def __init__(self,**kwargs): 
     super(MainApp,self).__init__(**kwargs) 
    pass 

class Forms(BoxLayout): 
    def __init__(self, **kwargs): 
     super(Main,self).__init__(**kwargs) 
     self.ids.txtSearch.text = "new text" 

class Main(App): 
    def build(self): 
     return root_widget 

if __name__ == "__main__": 
    Main().run() 

------kivy------- 

<Main>: 
    TextInput: 
     id: txtSearch 

这不是我的全部代码,但我认为这些都是在发行

这个重要的是错误:

File "C:\Users\Guest\Documents\Python\Kivy\Project\main.py", line 295, in <module> 
''') 
File "D:\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 1828, in load_string 
self._apply_rule(widget, parser.root, parser.root) 
File "D:\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 1985, in _apply_rule 
self.apply(child) 
File "D:\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 1872, in apply 
self._apply_rule(widget, rule, rule) 
File "D:\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 1986, in _apply_rule 
self._apply_rule(child, crule, rootrule) 
File "D:\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 1986, in _apply_rule 
self._apply_rule(child, crule, rootrule) 
File "D:\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 1983, in _apply_rule 
child = cls(__no_builder=True) 
File "C:\Users\Guest\Documents\Python\Kivy\Project\main.py", line 40, in __init__ 
self.ids.txtSearch.text = "new text" 
    File "kivy\properties.pyx", line 720, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:10911) 
AttributeError: 'super' object has no attribute '__getattr__' 
+0

oops a mistype,thats Forms class – Shivr

+0

所以'kv'文件应该相应地改变:':'...虽然你可能想要'Forms:',以实际实例化一个小部件。 – zeeMonkeez

+0

如果您发布[mcve],您更有可能获得有用的答案。 – zeeMonkeez

回答

0

确定self.ids.txtSearch存在,当你尝试指派text它?你打电话super(Main,self)上面一行,所以我猜txtSearch永远不会实例化。

顺便说一句,这是更好地初始化小部件*.kv文件:

<Main>: 
    TextInput: 
     id: txtSearch 
     text: "new text" 
0

要更改窗口小部件的属性在kivy你需要“链接”的.py和.kv文件之间的小部件,首先在.py文件:

txt_Search = ObjectProperty() 

然后在.kv文件,在你的根小部件:

txt_Search: txtSearch 

则ID分配给widg等(因为你已经做了):

self.txt_Search.text = 'New Text' 

或任何其他属性:

self.txt_Search.height = '30dp' 

<Main>: 
    TextInput: 
     id: txtSearch 
     text: ' ' 

然后在你的.py文件,你可以这样做改变控件的属性