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()