簡體   English   中英

Kivy-如何在python中訪問Kivy小部件?

[英]Kivy - How to access kivy widget in python?

我想在kivy中編輯TextInput中的文本,但不知道如何,因為我已經在網上搜索了此代碼,但還是沒有運氣。

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__'

要在kivy中更改Widgets屬性,您需要先在.py和.kv文件之間“鏈接” .py和.kv文件:

txt_Search = ObjectProperty()

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

txt_Search: txtSearch

然后將ID分配給小部件(就像您已經做的那樣):

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

然后在您的.py文件中,您可以通過以下方式更改小部件的屬性:

self.txt_Search.text = 'New Text'

或任何其他屬性:

self.txt_Search.height = '30dp'

嘗試為其分配text時,您確定self.ids.txtSearch存在嗎? 您在上面的一行中調用了super(Main,self) ,所以我猜txtSearch從未實例化。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM