2016-05-29 6 views
1

は、あなたがこの問題を解決するために私を助けてください...私は、単純な数学の計算のためのpython PyQt4で簡単なアプリケーションを作成している可能性があり、私がクリックしたときにtextEdit2とtextEdit3で結果を持つすべてのものは、罰金行ってきました計算のプッシュボタンでは、上記のtexteditsに値が表示されます...私が望むのは、同じテキスト編集に結果を保存して、アプリケーションを開いてデータファイルを開くときに、次にすべてのものが見つかるようにすることです。私は私が保存した後、自分のコードも保存されるために必要な結果をメインウィンドウと別のショットを添付していますPython PYQt4内のいくつかのQtextEditのテキストを保存するには?私はpythonのPyQtは初心者だとして

...保存して開いた行動を...しかし、それは同じテキスト編集中のすべての結果を保存作成し、あなたは順番にファイルにテキストエディット値を書いているので、私は、適切にあなたの質問を理解していれば、アプリケーションを開くと、1つのテキストエディット

enter code here 
import sys 
from PyQt4 import QtCore, QtGui, uic 
import os #os used to interface with windows 
import datetime as dt 
import pickle 
qtCreatorFile = "save.ui" # Enter ui file here 

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) 

class MyApp(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self):       

     super (MyApp,self).__init__()  
     Ui_MainWindow.__init__(self) 
     self.setupUi(self) 
     self.initUI() 
     self.calc.clicked.connect(self.Bss) 

    def Bss (self): 
     x = float(self.textEdit.toPlainText())  
     y = float(self.textEdit1.toPlainText()) 
     z= x+y 
     w= x**2 

     z_string = str(z)   #convert z value to a string then add this string to textEdit and set as Text 
     self.textEdit2.setText(z_string) 
     w_string = str(w) 
     self.textEdit3.setText(w_string) 

    def initUI(self):   #QAction class insert New,action save in the main menue bar 
     newAction = QtGui.QAction('New', self) 
     newAction.setShortcut('Ctrl+N') 
     newAction.setStatusTip('Create new file') 
     newAction.triggered.connect(self.newFile) 
     saveAction = QtGui.QAction('Save as', self) 
     saveAction.setShortcut('Ctrl+S') 
     saveAction.setStatusTip('Save current file') 
     saveAction.triggered.connect(self.saveFile) 
     openAction = QtGui.QAction('Open', self) 
     openAction.setShortcut('Ctrl+O') 
     openAction.setStatusTip('Open a file') 
     openAction.triggered.connect(self.openFile) 
     closeAction = QtGui.QAction('Close', self) 
     closeAction.setShortcut('Ctrl+Q') 
     closeAction.setStatusTip('Close Notepad') 
     closeAction.triggered.connect(self.close) 
     menubar = self.menuBar() 
     fileMenu = menubar.addMenu('&File') 
     fileMenu.addAction(newAction) 
     fileMenu.addAction(saveAction) 
     fileMenu.addAction(openAction) 
     fileMenu.addAction(closeAction) 
     self.show() 
     self.statusBar() 

    def newFile(self): #create a new function and remove all values in the QTEXTedit 
     self.textEdit.clear() 
     self.textEdit1.clear() 
     self.textEdit2.clear() 
     self.textEdit3.clear()     

    def openFile(self): 
     self.text = QtGui.QTextEdit(self) 
     filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME')) 
     f = open(filename, 'r') 
     filedata = f.read() 
     self.textEdit1.setText(filedata) 
     self.textEdit2.setText(filedata) 
     self.textEdit3.setText(filedata) 
     f.close() 
     self.show() 

    def saveFile(self): # saving argument values in a filedata 
     self.text = QtGui.QTextEdit(self) 
     filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME')) 
     f = open(filename, 'w') 
     filedata = self.textEdit1.toPlainText() 
     f.write(filedata) 
     filedata = self.textEdit2.toPlainText() 
     f.write(filedata) 
     filedata = self.textEdit3.toPlainText() 
     f.write(filedata) 
     f.close() 

    def closeEvent(self, event): 
     reply = QtGui.QMessageBox.question(self, 'Message', 
     "Are you sure to quit?", QtGui.QMessageBox.Yes | 
     QtGui.QMessageBox.No, QtGui.QMessageBox.No) 

     if reply == QtGui.QMessageBox.Yes: 
      event.accept() 
     else: 
      event.ignore() 
if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    window = MyApp() 
    window.show() 
    sys.exit(app.exec_()) 

答えて

1

ですべての結果を持つことは、あなたが開くときに行ずつ値その読みする必要がありますファイル全体を読み取る代わりに、read()メソッドを使用してください。 openFile()メソッドは次のようになります。

def openFile(self): 
    self.text = QtGui.QTextEdit(self) 
    filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME')) 
    count = 0 
    with open(filename,'r') as f: 
     for line in f: 
      count = count + 1 
      if count == 1 : self.textEdit1.setText(line) 
      elif count == 2 : self.textEdit2.setText(line) 
      elif count == 3 : self.textEdit3.setText(line) 
      else: break 
    self.show() 

希望します!

UPDATE:

も、以下のようなセーブファイル()メソッドに変更します。お返事を

def saveFile(self): # saving argument values in a filedata 
    self.text = QtGui.QTextEdit(self) 
    filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME')) 
    f = open(filename, 'w') 
    filedata = self.textEdit1.toPlainText() 
    filedata = str(filedata)+"\n" 
    f.write(filedata) 
    filedata = self.textEdit2.toPlainText() 
    filedata = str(filedata)+"\n" 
    f.write(filedata) 
    filedata = self.textEdit3.toPlainText() 
    filedata = str(filedata)+"\n" 
    f.write(filedata) 
    f.close() 
+0

おかげSoheilを。私は、独自のtextEditと順序で各値を保存するために探しています。あなたのソリューションを試してみると...私はファイルを開くと... 1つのtextEdit内のすべての値を作成します...空の値で他の人を残して...どのように私はそれを適用することができますについてのアイデア? – ahmedhany

+0

saveFile()メソッドの推測では、すべてのデータを1行に書き込んでいます。その場合は、saveFile()メソッドの各filedata変数に '\ n'文字を追加してください。 – Soheil

+0

これは完璧に機能しました....多くのおかげで... – ahmedhany

関連する問題