#python #kivy #kivy-language
#python #kivy #kivy-язык
Вопрос:
импорт:
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'
text: newList
TextInput:
id: newList
Button:
text: 'click'
on_press: app.clicked()
'''
MyApp
класс:
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’ не имеет атрибута).
Комментарии:
1. вы пробовали устанавливать строку вместо списка? self.root.ids.your_textinput.text = ‘n’.join(новый список)
Ответ №1:
Прежде всего, вы открываете файл с именем read.text
, которого не существует. Текстовые файлы имеют расширение .txt
. Поскольку такой файл не существует, файл не открывается, и поэтому в список ничего не добавляется newList
. Итак, все, что вам нужно сделать, это изменить .text
на .txt
второе, это то, что вы присвоили своему полю textinput тот же идентификатор, что и список, что может вызвать ошибку позже. Также при выполнении 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()
Комментарии:
1. Откуда вы знаете правильное имя файла OP?
2. Он использует ‘read.text’ в своем коде, но текстовые файлы имеют расширение ‘.txt’, а не ‘.text’
3. Вполне возможно, что файл имеет расширение
.text
. Если бы OP пытался прочитать файл, который не существует, они бы получили FileNotFoundError .4. В его коде были и другие ошибки. Я перечислил их все и, исправив их все, также опубликовал окончательный код