Python 大家好,有人能帮我吗?我想阅读kivy textinput或label中的文本文件

Python 大家好,有人能帮我吗?我想阅读kivy textinput或label中的文本文件,python,kivy,kivy-language,Python,Kivy,Kivy Language,进口: from kivy.app import App from kivy.lang import Builder from kivy.properties import StringProperty from kivy.uix.textinput import TextInput MyAppclass: class MyApp(App): text = StringProperty('read.text') def build(self): return

进口:

from kivy.app import App
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput
MyApp
class:

class MyApp(App):
    text = StringProperty('read.text')

    def build(self):
        return Builder.load_string(kv)

    def clicked(self):
        file = open('read.text', 'r')
        f = file.readlines()
        newList = []
        for line in f:
            newList.append(line.strip())
        print(newList)
        self.root.ids.your_textinput.text = (newList)


if __name__ == '__main__':
    MyApp().run()

当我按run(AttributeError:“list”对象没有属性)时会显示此消息。

首先,您打开的文件名为
read.text
,它不存在。文本文件具有扩展名
.txt
。由于这样的文件不存在,因此文件不会打开,因此不会向列表添加任何内容
newList
。因此,您所要做的就是将
.text
更改为
.txt
第二件事是,您为textinput字段指定了与列表相同的id,这可能会在以后导致错误。另外,在执行
self.root.ids.your_textinput.text=(newList)
时,您提供的是列表而不是文本,这也会导致错误。因此,您的最终代码是:

from kivy.app import App
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput

kv = '''
BoxLayout:
    orientation: 'vertical'
    TextInput:
        id: text_field
    Button:
        text: 'click'
        on_press: app.clicked()

'''

class MyApp(App):
    text = StringProperty('read.txt')

    def build(self):
        return Builder.load_string(kv)

    def clicked(self):
        file = open('read.txt', 'r')
        f = file.readlines()
        self.root.ids.text_field.text = (''.join(f))


if __name__ == '__main__':
    MyApp().run()

您如何知道OP文件的正确名称?他在代码中使用了“read.text”,但文本文件的扩展名为“.txt”而非“.text”。文件的扩展名为
.text
,这是完全可能的。如果OP试图读取一个不存在的文件,他们将得到一个FileNotFoundError。他的代码中还有其他错误。我把它们都列了出来,在更正了它们之后,我发布了最后的代码。非常感谢你,我知道你是否尝试过设置字符串而不是列表?self.root.ids.your_textinput.text='\n'.加入(新列表)
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput

kv = '''
BoxLayout:
    orientation: 'vertical'
    TextInput:
        id: text_field
    Button:
        text: 'click'
        on_press: app.clicked()

'''

class MyApp(App):
    text = StringProperty('read.txt')

    def build(self):
        return Builder.load_string(kv)

    def clicked(self):
        file = open('read.txt', 'r')
        f = file.readlines()
        self.root.ids.text_field.text = (''.join(f))


if __name__ == '__main__':
    MyApp().run()