Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import PyQt5.QtWidgets as QtW
- import PyQt5.QtGui as QtG
- import codecs
- import re
- class MainWindow(QtW.QMainWindow):
- def __init__(self):
- QtW.QMainWindow.__init__(self)
- self.setWindowTitle('My text editor')
- self.resize(700, 500)
- # New file
- self.button4 = QtW.QPushButton('New file', self)
- self.button4.clicked.connect(self.newfile)
- self.button4.setGeometry(0, 5, 60, 40)
- self.button4.show()
- # text field
- self.tab = QtW.QTextEdit(self)
- self.tab.setGeometry(0, 50, 700, 450)
- self.tab.show()
- # Open button
- self.button1 = QtW.QPushButton('Open', self)
- self.button1.clicked.connect(self.open)
- self.button1.setGeometry(70, 5, 60, 40)
- self.button1.show()
- # Save button
- self.button2 = QtW.QPushButton('Save', self)
- self.button2.clicked.connect(self.save)
- self.button2.setGeometry(140, 5, 60, 40)
- self.button2.show()
- # Exit button
- self.button3 = QtW.QPushButton('Search', self)
- self.button3.clicked.connect(self.search)
- self.button3.setGeometry(210, 5, 60, 40)
- self.button3.show()
- self.show()
- def newfile(self):
- self.tab.setText('')
- def open(self):
- filename = QtW.QFileDialog.getOpenFileName(self, 'Open file')[0]
- if not filename:
- return
- with codecs.open(filename, 'r', 'utf-8') as f:
- txt = f.read()
- self.tab.setText(txt)
- def save(self):
- filename = QtW.QFileDialog.getSaveFileName(self)[0]
- if not filename:
- return
- txt = self.tab.toPlainText()
- with codecs.open(filename, 'w', 'utf-8') as f:
- f.write(txt)
- def search(self):
- query, ok = QtW.QInputDialog.getText(self, 'Text search', u'Input text to find')
- if ok:
- text = self.tab.toPlainText()
- pattern = re.compile(query)
- word = re.search(pattern, text)
- start, end = word.span()
- self.tab.setFocus()
- self.movement(start, end)
- def movement(self, start, end):
- cursor = self.tab.textCursor()
- cursor.setPosition(start)
- cursor.movePosition(QtG.QTextCursor.Right, QtG.QTextCursor.KeepAnchor, end - start)
- self.tab.setTextCursor(cursor)
- def main():
- app = QtW.QApplication([])
- window = MainWindow()
- app.exec_()
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment