環境設定が終わったので、少しづつアプリを作成していく。
本日の目標は、
- GUIウインドウからテキストファイルを指定して読み込み
- 別画面に表示、編集可能
- セーブ機能+Quitボタンを押すと閉じる
の3つ
以下のようになりました。あんまりスマートでないかも。
# readfileandshow.py (coding UTF8) # refs.: http://zetcode.com/tutorials/pyqt4/dialogs/ # http://zetcode.com/tutorials/pyqt4/firstprograms/ # # -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui # ファイルダイアログclass class FileDialog(QtGui.QMainWindow): def __init__(self): super(FileDialog, self).__init__() self.initUI() def initUI(self): self.textEdit = QtGui.QTextEdit() self.setCentralWidget(self.textEdit) self.statusBar() self.setFocus() self.setWindowTitle('File read, save and quit') # openFileのAction openFile = QtGui.QAction(QtGui.QIcon('open.png'), 'Open', self) openFile.setShortcut('Ctrl+O') openFile.setStatusTip('Open new File') self.connect(openFile, QtCore.SIGNAL('triggered()'), self.showOpenDialog) # saveFileのAction saveFile = QtGui.QAction(QtGui.QIcon('save.png'), 'Save', self) saveFile.setShortcut('Ctrl+S') saveFile.setStatusTip('Save File') self.connect(saveFile, QtCore.SIGNAL('triggered()'), self.showSaveDialog) # QuitのAction Quit = QtGui.QAction(QtGui.QIcon('quit.png'), 'Quit', self) Quit.setShortcut('Ctrl+Q') Quit.setStatusTip('Quit this program') self.connect(Quit, QtCore.SIGNAL('triggered()'), self.QuitDialog) # Menu barのセットアップ menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(openFile) fileMenu.addAction(saveFile) fileMenu.addAction(Quit) def showOpenDialog(self): filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '') from os.path import isfile if isfile(filename): import codecs fname = codecs.open(filename,'r','utf-8') #UTF-8のファイルを読み込み data = fname.read() self.textEdit.setText(data) def showSaveDialog(self): savename = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '') fname = open(savename, 'w') fname.write(self.textEdit.toPlainText()) def QuitDialog(self): 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: quit() else: return app = QtGui.QApplication(sys.argv) #Qtアプリケーションオブジェクトを作る #このオブジェクトハンドルはマウスや #キーボードのイベントを取得する大本になる win = FileDialog() # file dialog class win.show() # windowを示す sys.exit( app.exec_() ) # exitボタンが押されるまで表示
# 次回は、Tab表示に挑戦!