首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kivy -如何在python中访问kivy小部件?

Kivy -如何在python中访问kivy小部件?
EN

Stack Overflow用户
提问于 2016-02-19 21:49:23
回答 2查看 935关注 0票数 1

我想在kivy中编辑TextInput中的文本,但不知道如何编辑,我已经尝试了这个代码作为我在网上搜索,但仍然没有运气。

代码语言:javascript
复制
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

这不是我的全部代码,但我认为这些才是问题的关键

这是错误:

代码语言:javascript
复制
    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__'
EN

回答 2

Stack Overflow用户

发布于 2016-02-25 21:41:23

要在kivy中更改小部件属性,您需要在.py和.kv文件之间‘链接’小部件,首先在.py文件中:

代码语言:javascript
复制
txt_Search = ObjectProperty()

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

代码语言:javascript
复制
txt_Search: txtSearch

然后将id分配给一个小部件(就像您已经做的那样):

代码语言:javascript
复制
<Main>:
    TextInput:
        id: txtSearch
        text: ' ' 

然后,在.py文件中,您可以通过执行以下操作来更改小部件的属性:

代码语言:javascript
复制
self.txt_Search.text = 'New Text'

或任何其他属性:

代码语言:javascript
复制
self.txt_Search.height = '30dp'
票数 1
EN

Stack Overflow用户

发布于 2016-02-19 22:41:45

当您尝试为其分配text时,您确定self.ids.txtSearch存在吗?您在上面一行中调用了super(Main,self),所以我猜txtSearch永远不会被实例化。

顺便说一句,最好在*.kv文件中初始化小部件:

代码语言:javascript
复制
<Main>:
    TextInput:
        id: txtSearch
        text: "new text"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35506923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档