Добавить строку к текстовому вводу при отпускании кнопки с помощью kivy - PullRequest
0 голосов
/ 26 октября 2019

У меня есть метод выбора файла с использованием 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)

1 Ответ

0 голосов
/ 26 октября 2019

Я обнаружил, что мне не хватает .text детали для ObjectProperty():

self.text_from_file.text = string

...