【问题标题】:how to open and save a file in scroll area widget with pyqt4如何使用pyqt4在滚动区域小部件中打开和保存文件
【发布时间】:2019-03-13 19:20:34
【问题描述】:

这里我根据我的程序更改了这个代码,我得到了一个错误,请你帮我解决这个错误

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'

【问题讨论】:

  • 什么是self?你有什么问题?
  • 我正在命令提示符中获取我的文本,但我想在滚动区域小部件中保存文件,但我不知道如何在滚动区域中保存文件

标签: python pyqt pyqt4 qfiledialog


【解决方案1】:

您有以下错误:

  • scrollArea 是一个不属于 w 小部件的小部件,因此它不会显示,因此有两种可能的解决方案:使其成为 w 的儿子并手动调整其大小,或使用布局,在这种情况下使用第二个。

  • 当你用f.read()读取一个文件时,你会从缓冲区f中删除它,也就是说,如果你调用f.read()它不会返回任何东西,因为光标在文件的末尾,所以它打印在控制台上,但不会显示在 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_())

【讨论】:

猜你喜欢
  • 2015-12-04
  • 2019-09-01
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多