如何使用pyqt4在滚动区域小部件中打开和保存文件
how to open and save a file in scroll area widget with pyqt4
这里我根据我的程序更改了这段代码,我得到了一个错误,你能帮我纠正这个错误吗
def save_file(self):
self.contents =QtGui.QTextEdit()
self.w = QtGui.QWidget()
self.lay = QtGui.QVBoxLayout()
filename, filter = QtGui.QFileDialog.getOpenFileName(parent=self, caption='Open file', dir='.', filter='csv file(*.csv)')
if filename:
self.contents.setText(filename.read())
self.lay.addWidget(self.contents)
self.w.setLayout(self.lay)
self.scrollArea.setWidget(self.w)
AttributeError: 'unicode' 对象没有属性 'read'
您有以下错误:
scrollArea
是一个不属于 w
小部件的小部件,因此它不会显示,因此有 2 种可能的解决方案:将其设为 w 的儿子和手动调整其大小,或使用布局,在本例中使用第二种。
当您使用 f.read()
读取文件时,您将其从缓冲区 f 中删除,也就是说,如果您调用 f.read()
它不会 return 因为光标位于文件末尾,因此它会打印在控制台上,但不会显示在 QTextEdit 中。
您有一些印刷错误。
综合以上,解决方案如下:
import sys
from PyQt4 import QtGui
if __name__ == '__main__':
a = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
lay = QtGui.QVBoxLayout(w)
scrollArea = QtGui.QScrollArea(widgetResizable=True)
lay.addWidget(scrollArea)
textEdit = QtGui.QTextEdit()
scrollArea.setWidget(textEdit)
filename = QtGui.QFileDialog.getOpenFileName(w, 'Open File', '/')
if filename:
with open(filename, 'r') as f:
textEdit.setText(f.read())
w.resize(320, 240)
w.show()
sys.exit(a.exec_())
这里我根据我的程序更改了这段代码,我得到了一个错误,你能帮我纠正这个错误吗
def save_file(self):
self.contents =QtGui.QTextEdit()
self.w = QtGui.QWidget()
self.lay = QtGui.QVBoxLayout()
filename, filter = QtGui.QFileDialog.getOpenFileName(parent=self, caption='Open file', dir='.', filter='csv file(*.csv)')
if filename:
self.contents.setText(filename.read())
self.lay.addWidget(self.contents)
self.w.setLayout(self.lay)
self.scrollArea.setWidget(self.w)
AttributeError: 'unicode' 对象没有属性 'read'
您有以下错误:
scrollArea
是一个不属于w
小部件的小部件,因此它不会显示,因此有 2 种可能的解决方案:将其设为 w 的儿子和手动调整其大小,或使用布局,在本例中使用第二种。当您使用
f.read()
读取文件时,您将其从缓冲区 f 中删除,也就是说,如果您调用f.read()
它不会 return 因为光标位于文件末尾,因此它会打印在控制台上,但不会显示在 QTextEdit 中。您有一些印刷错误。
综合以上,解决方案如下:
import sys
from PyQt4 import QtGui
if __name__ == '__main__':
a = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
lay = QtGui.QVBoxLayout(w)
scrollArea = QtGui.QScrollArea(widgetResizable=True)
lay.addWidget(scrollArea)
textEdit = QtGui.QTextEdit()
scrollArea.setWidget(textEdit)
filename = QtGui.QFileDialog.getOpenFileName(w, 'Open File', '/')
if filename:
with open(filename, 'r') as f:
textEdit.setText(f.read())
w.resize(320, 240)
w.show()
sys.exit(a.exec_())