7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PyQtを利用してシンプルなテキストエディタを作ってみた

Last updated at Posted at 2017-04-09

PyQtを利用してのシンプルなテキストエディタを作ってみました。

Simpletextedit.py

# -*- coding:utf-8 -*-
# Very Simple Text Editor

# Initial setting & import library
import sys, codecs
from PyQt4 import QtGui, QtCore, QtWebKit
app = QtGui.QApplication(sys.argv)


# Main Window
class CustomMainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(CustomMainWindow, self).__init__(parent)

	# Set Window Style
        self.resize(800, 500)
        self.setWindowTitle("SimpleTextEditor")
        self.setStyleSheet("background-color: white")
	# Enable file drop
        self.setAcceptDrops(True)
	# Add text editer
        self.addtextedit()


        # Tool Bar
        self.file_tool = self.addToolBar("File")
        self.edit_tool = self.addToolBar("Exit")

        newbutton = self.file_tool.addAction("New...")
	self.connect(newbutton, QtCore.SIGNAL('triggered()'), self.addtextedit)

        openbutton = self.file_tool.addAction("Open...")
	self.connect(openbutton, QtCore.SIGNAL('triggered()'), self.showFileDialog)

        closebutton = self.edit_tool.addAction("Save...")
	self.connect(closebutton, QtCore.SIGNAL('triggered()'), self.saveFile)

        closebutton = self.edit_tool.addAction("Close...")
	self.connect(closebutton, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))

        # Add MenuBar
        filemenu = self.menuBar()
        filemenu = filemenu.addMenu('&File')
	filemenu.addMenu("New...")
        filemenu.addMenu("Open...")
        filemenu.addMenu("Save...")

	# Add Open menu
        a = QtGui.QAction('Open', self)
        a.setShortcut('Ctrl+o')
        self.connect(a, QtCore.SIGNAL('triggered()'),
                     self.showFileDialog)
        filemenu.addAction(a)
        
        # Add Exit menu
        a = QtGui.QAction('Exit', self)
        a.setShortcut('Ctrl+w')
        self.connect(a, QtCore.SIGNAL('triggered()'),
                     QtCore.SLOT('close()'))
        filemenu.addAction(a)

	# Add Save menu
        a = QtGui.QAction('Save', self)
        a.setShortcut('Ctrl+s')
        self.connect(a, QtCore.SIGNAL('triggered()'),
                     self.saveFile)
        filemenu.addAction(a)

    # Setting Dialog
    def showFileDialog(self):
        # Add text Editer
        self.textEdit = QtGui.QTextEdit()
        self.setCentralWidget(self.textEdit)

        fname = QtGui.QFileDialog.getOpenFileName(self, 'Open', '.')
        f = open(unicode(fname))
        self.textEdit.setText(f.read())

    # Accept drag of file
    def dragEnterEvent(self, e):
        print("c")
        if e.mimeData().hasUrls():
            e.accept()
        else:
            e.ignore()

    # Drop processing
    def dropEvent(self, e):

        # Add text Editer
        self.textEdit = QtGui.QTextEdit()
        self.setCentralWidget(self.textEdit)

	# Open drop files
        for u in e.mimeData().urls():
            p = unicode(u.toLocalFile())
	    print ("Open file at " + p)
            f = open(unicode(p))
            self.textEdit.setText(f.read())

    # add save file dialog
    def saveFile(self):
        savename = unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save file', ''))
        fname = codecs.open(savename,'w','utf-8')
	fname.write(self.textEdit.toPlainText())

    # add Central Widget => textedit
    def addtextedit(self):
	# Add text Editer
        self.textEdit = QtGui.QTextEdit()
        self.setCentralWidget(self.textEdit)

# Create instance
def main():
    main = CustomMainWindow()
    main.show()
    app.exec_()

if __name__ == '__main__':
    main()
7
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?