文件打开机制



我正在尝试创建一个应用程序。应用程序为用户提供了2个组合框。组合框1给出了用户想要的文件名的第一部分,组合框2给出了文件名的第二部分。例如,组合框1选项1为1,组合框2选项1为A;选择的文件为"1_A.txt"。我有一个加载按钮,这是使用文件名,并打开一个文件与该名称。如果文件不存在,应用程序打开一个对话框,提示"no Such file exists"

from PySide import QtGui, QtCore
from PySide.QtCore import*
from PySide.QtGui import*
class MainWindow(QtGui.QMainWindow):
    def __init__(self,):
        QtGui.QMainWindow.__init__(self)
        QtGui.QApplication.setStyle('cleanlooks')
        #PushButtons
        load_button = QPushButton('Load',self)
        load_button.move(310,280)
        run_Button = QPushButton("Run", self)
        run_Button.move(10,340)
        stop_Button = QPushButton("Stop", self)
        stop_Button.move(245,340)
        #ComboBoxes
        #Option1
        o1 = QComboBox(self)
        l1 = QLabel(self)
        l1.setText('Option 1:')
        l1.setFixedSize(170, 20)
        l1.move(10,230)
        o1.move(200, 220)
        o1.setFixedSize(100, 40)
        o1.insertItem(0,'')
        o1.insertItem(1,'A')
        o1.insertItem(2,'B')
        o1.insertItem(3,'test')
        #Option2
        o2 = QComboBox(self)
        l2 = QLabel(self)
        l2.setText('Option 2:')
        l2.setFixedSize(200, 20)
        l2.move(10,290)
        o2.move(200,280)
        o2.setFixedSize(100, 40)
        o2.insertItem(0,'')
        o2.insertItem(1,'1')
        o2.insertItem(2,'2')
        o2.insertItem(3,'100')
        self.fileName = QLabel(self)
        self.fileName.setText("Select Options")
        o1.activated.connect(lambda: self.fileName.setText(o1.currentText() + '_' + o2.currentText() + '.txt'))
        o2.activated.connect(lambda: self.fileName.setText(o1.currentText() + '_' + o2.currentText() + '.txt'))
        load_button.clicked.connect(self.fileHandle)
    def fileHandle(self):
        file = QFile(str(self.fileName.text()))
        open(file, 'r')
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.setWindowTitle("Test11")
    window.resize(480, 640)
    window.show()
    sys.exit(app.exec_())

我得到的错误是TypeError: invalid file: <PySide.QtCore.QFile object at 0x031382B0>,我怀疑这是因为文件句柄中描述的字符串没有正确插入到QFile中。谁能帮帮我

Python open()函数不知道类型为QFile的对象。不过,我怀疑您是否真的需要构造一个QFile对象。

相反,只需通过open(self.fileName.text(), 'r')直接打开文件。最好是这样做:

with open(self.fileName.text(), 'r') as myfile:
    # do stuff with the file

除非您需要长时间打开文件

我也想到了一个解决办法。

 def fileHandle(self):
        string = str(self.filename.text())
        file = QFile()
        file.setFileName(string)
        file.open(QIODevice.ReadOnly)
        print(file.exists())
        line = file.readLine()
        print(line)

它的作用是获取文件名字段的字符串。创建文件对象。将文件对象命名为字符串,然后打开文件。我已经存在检查文件是否存在,并且在阅读我拥有的测试文档后,它似乎按我想要的方式工作。

谢谢@three_pineapples,但我要用我的解决方案:p

相关内容

  • 没有找到相关文章

最新更新