Форум сайта python.su
Вот программа которая должна сохранять данные в файл и открывать их в текстовом поле но добавляется только то последняя строка, в чем моя ошибка, помогите пожалуйста.
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_())
Прикреплённый файлы:
test1.PNG (5,3 KБ)
Офлайн
вот скриншот текстового файла
Прикреплённый файлы:
test_txt.PNG (4,1 KБ)
Офлайн
zxcvbnmНу так у вас идет построчное считывание из файла и каждая строка записывается в text2, но каждая очередная строка перезаписывает предыдущию. Более конкретно не мугу сейчас ответить, спать собрался.def open_file(self): f = open('test.txt') for line in f.readlines(): self.text2.setText(line) f.close()
Офлайн
Используйте вместо setText(line) append(line)
Ну и не забывайте читать мануалы чтоли http://doc.qt.io/qt-5/qtextedit.html
там описано еще много интересных методов QTextEdit
[code python][/code]
Офлайн
def open_file(self): f = open('test.txt') for line in f.readlines(): self.text2.append(line) f.close()
Прикреплённый файлы:
test1.PNG (2,0 KБ)
Офлайн
self.text2.append(line.rstrip())
Отредактировано JOHN_16 (Март 18, 2017 21:10:47)
Офлайн
это не он, это file, у него есть “фишка” когда он считывает сттроки он автоматом в конце ставит “\n” - перевод строки, вот вы ее и получаете, а append добавляет текст в новой строки.
Выше уже подсказали как пофиксить.
[code python][/code]
Отредактировано PEHDOM (Март 18, 2017 21:29:49)
Офлайн
JOHN_16Большое спасибо
Офлайн