У меня есть метод выбора файла с использованием kivy filechooser
, и я хочу загрузить содержимое файла, который я прочитал, в поле TextInput
после нажатия кнопки Load
.
Я не уверенесли я правильно использую переменную text_from_file
в .kv
файле, но я застрял в этой точке и не уверен, что еще здесь делать.
Я пытался сохранить строку из файла в self.text_from_file
и затем присвоил его переменной self.usecase
, где в файле .kv
я использовал usecase
для сопоставления поля textinput
. Но строка не появляется в поле textinput
после того, как я нажму кнопку Load
.
Это мой код Python (main.py)
:
class Grid(Widget):
load = ObjectProperty(None)
cancel = ObjectProperty(None)
text_from_file = ObjectProperty(None)
usecase = ObjectProperty(None)
def show_load_list(self):
content = LoadDialog(load=self.load_list, cancel=self.dismiss_popup)
self._popup = Popup(title="Load a file list", content=content, size_hint=(1, 1))
self._popup.open()
def load_list(self, path, filename):
with open(filename[0], 'r') as file:
self.text_from_file = file.read()
self.usecase = self.text_from_file
self.dismiss_popup()
def dismiss_popup(self):
self._popup.dismiss()
Это main.kv
:
<Grid>
usecase: use_case_text
GridLayout:
cols:1
size: root.width, root.height
GridLayout:
cols:2
TextInput:
id: use_case_text
multiline: True
Button:
text: "Import use case"
on_press: root.show_load_list()
<LoadDialog>:
BoxLayout:
size: root.size
pos: root.pos
orientation: "vertical"
FileChooserListView:
id: filechooser
path: './'
BoxLayout:
size_hint_y: None
height: 30
Button:
text: "Cancel"
on_release: root.cancel()
Button:
text: "Load"
on_release: root.load(filechooser.path, filechooser.selection)