1. Текстовый файл не обновляется после загрузки в качестве переменной класса, 2. Как прикрепить строку к файлу без sp.chars - PullRequest
0 голосов
/ 09 апреля 2020

Я относительно новичок в кодировании. Всего пару месяцев. Я хорошо со многими вещами, которые только начались с классов и пытались создать мобильное приложение в Kivy. То же самое приложение в Tkinter было проще, но как только я переписал код с синтаксисом и классами Kivy, стало немного сложнее.

Так что после 3-х дней попыток использования различных подходов я хотел бы попросить вас о помощи. Я добавил оба файла на GitHub: https://github.com/UnryMF/7-Wonders-Assistant

  1. Я не знаю, как обновить переменную класса, которая читает содержимое текстового файла. >

    One of the screens to load and present results: класс ResultsScreen (BoxLayout, Screen):

    with open('test.txt', 'r') as display:
        display_contents = display.read()
    
    pass
    

В киве

<ResultsScreen>
    name: 'Results'
    orientation: 'vertical'
    padding: 25, 25
    spacing: 5

BoxLayout:
    Label:
        text: root.display_contents
        multiline: True
BoxLayout:
    Button:
        text: "Back"
        size_hint: 1, 0.4
        on_release:
            app.root.current = "WManager"
            root.manager.transition.direction = "up"

Мой вопрос заключается в том, как перезагрузить этот файл в память (в настоящее время он читает версию перед обновлением, выполненным другими функциями) после перезагрузки приложения, когда его снова читают.

Это может быть менее сложно. Как только я добавляю результаты поиска в текстовый файл, в нем сохраняются все ненужные специальные символы.

self.add = self.i, «будет играть», self.wonder, random. choice (AdvancedWindow.ab) Затем, когда я добавляю это в файл:

(«Player1», «будет играть», «Александрийский маяк», «A»)

Желаемый результат будет таким же, как при использовании печати. print (self.i, 'will play', self.wonder, '(', random.choice (AdvancedWindow.ab), ')')

Player1 будет играть Мавзолей в Галикарнасе (B )

Исходный код добавлен на GitHub. Если у вас есть идеи, как я могу исправить эту часть кода, я был бы признателен.

1 Ответ

0 голосов
/ 10 апреля 2020

Не уверен, что я полностью понимаю ваш вопрос, но если вы пытаетесь обновить дисплей при повторном чтении файла test.txt, вы можете использовать Kivy Property:

class ResultsScreen(BoxLayout, Screen):
    display_contents = StringProperty('')

with open('test.txt', 'r') as display:
    self.display_contents = display.read()

Это предполагает, что ваш with open является частью класса ResultsScreen.

Что касается второго вопроса, я думаю, вы можете просто заменить разделители , на '+' в вашей строке это определяет self.add. В противном случае вы создаете список, а не строку текста.

...