Найти - Пользователи
Полная версия: Неправильно читает данные из файла
Начало » GUI » Неправильно читает данные из файла
1
zxcvbnm

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



from PyQt5.QtWidgets import *
import sys


class MyWindow(QWidget):
def __init__(self):
super(MyWindow, self).__init__()
self.resize(300, 250)
vb = QVBoxLayout()
self.setLayout(vb)
self.but1 = QPushButton('Save')
self.text1 = QTextEdit()
self.le1 = QLineEdit()
self.le2 = QLineEdit()
self.but2 = QPushButton('Open')
self.text2 = QTextEdit()
self.le3 = QLineEdit()
self.le4 = QLineEdit()
vb.addWidget(self.but1)
vb.addWidget(self.text1)
vb.addWidget(self.le1)
vb.addWidget(self.le2)
vb.addWidget(self.but2)
vb.addWidget(self.text2)
vb.addWidget(self.le3)
vb.addWidget(self.le4)
self.but1.clicked.connect(self.save_file)
self.but2.clicked.connect(self.open_file)
self.show()

def save_file(self):
f = open( "test.txt" ,'w' )
for item in self.text1.toPlainText():
f.write(item)
f.write('\n')
f.write("---")
f.write('\n')
f.write(self.le1.text())
f.write('\n')
f.write(self.le2.text())
f.write('\n')

f.close()

def open_file(self):
f = open('test.txt')
for line in f.readlines():
self.text2.setText(line)
f.close()


if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
sys.exit(app.exec_())
zxcvbnm
вот скриншот текстового файла
MrViktor
zxcvbnm
 def open_file(self):
f = open('test.txt')
for line in f.readlines():
self.text2.setText(line)
f.close()
Ну так у вас идет построчное считывание из файла и каждая строка записывается в text2, но каждая очередная строка перезаписывает предыдущию. Более конкретно не мугу сейчас ответить, спать собрался.
PEHDOM
Используйте вместо setText(line) append(line)
Ну и не забывайте читать мануалы чтоли http://doc.qt.io/qt-5/qtextedit.html
там описано еще много интересных методов QTextEdit
zxcvbnm
  def open_file(self):
        f = open('test.txt')
        for line in f.readlines():
            self.text2.append(line)
        f.close()

Вот я сделал так но оно читает и добавляет пустые строки после каждой прочитанной
JOHN_16
             self.text2.append(line.rstrip())
PEHDOM
это не он, это file, у него есть “фишка” когда он считывает сттроки он автоматом в конце ставит “\n” - перевод строки, вот вы ее и получаете, а append добавляет текст в новой строки.
Выше уже подсказали как пофиксить.
zxcvbnm
JOHN_16
Большое спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB