Как писать в новых строках, потому что мои данные перезаписывают друг друга? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь сохранить ответы из графического интерфейса пользователя, у которого есть переключатели, которые имеют различное значение в диапазоне от A, B и C, но когда я пробую свой код, он полностью переписывает первые буквы и не переходит к следующим линия.

    self.pushButton.clicked.connect(lambda: 
    self.btnA_clk(self.radioButton_16.isChecked()))
    self.pushButton.clicked.connect(lambda: 
    self.btnB_clk(self.radioButton_17.isChecked()))
    self.pushButton.clicked.connect(lambda: 
    self.btnC_clk(self.radioButton_18.isChecked()))



def btnA_clk(self, clkA):
    if clkA:
        textfile = open("studentexam.txt", "w")
        print("A")
        textfile.write("A")
        textfile.close()

def btnB_clk(self, clkB):
    if clkB:
        textfile = open("studentexam.txt", "w")
        print("B")
        textfile.write("B")
        textfile.close()

def btnC_clk(self, clkC):
    if clkC:
        textfile = open("studentexam.txt", "w")
        print("C")
        textfile.write("C")
        textfile.close()

Мой вывод в консоли - b c d e, но в текстовом файле в первой строке записана только 1 буква, которая является последней буквой.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Каждый раз, когда ваш код делает это:

textfile = open("studentexam.txt", "w")

Вы открываете файл заново и перезаписываете то, что было раньше. Так же, как файл | Сохранение выполняется в приложении, за исключением того, что ваш код не спрашивает «Вы уверены?». Используйте режим "a" вместо "w".

Из документации для open () :

Наиболее часто используемые значения режима: «r» для чтения, «w» для записи (усечение файла, если он уже существует) и «a» для добавления.

0 голосов
/ 22 января 2019
# param = 'clkA'
def button_click(self, param):
    with open('studentexam.txt', 'a') as f:
        print(param[-1])
        f.write(param[-1])

Смущает режим файла python "w +"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...