frolkin28

text editor

Oct 23rd, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.52 KB | None | 0 0
  1. import PyQt5.QtWidgets as QtW
  2. import PyQt5.QtGui as QtG
  3. import codecs
  4. import re
  5.  
  6.  
  7. class MainWindow(QtW.QMainWindow):
  8.     def __init__(self):
  9.         QtW.QMainWindow.__init__(self)
  10.         self.setWindowTitle('My text editor')
  11.         self.resize(700, 500)
  12.  
  13.         # New file
  14.         self.button4 = QtW.QPushButton('New file', self)
  15.         self.button4.clicked.connect(self.newfile)
  16.         self.button4.setGeometry(0, 5, 60, 40)
  17.         self.button4.show()
  18.  
  19.         # text field
  20.         self.tab = QtW.QTextEdit(self)
  21.         self.tab.setGeometry(0, 50, 700, 450)
  22.         self.tab.show()
  23.  
  24.         # Open button
  25.         self.button1 = QtW.QPushButton('Open', self)
  26.         self.button1.clicked.connect(self.open)
  27.         self.button1.setGeometry(70, 5, 60, 40)
  28.         self.button1.show()
  29.  
  30.         # Save button
  31.         self.button2 = QtW.QPushButton('Save', self)
  32.         self.button2.clicked.connect(self.save)
  33.         self.button2.setGeometry(140, 5, 60, 40)
  34.         self.button2.show()
  35.  
  36.         # Exit button
  37.         self.button3 = QtW.QPushButton('Search', self)
  38.         self.button3.clicked.connect(self.search)
  39.         self.button3.setGeometry(210, 5, 60, 40)
  40.         self.button3.show()
  41.  
  42.         self.show()
  43.  
  44.     def newfile(self):
  45.         self.tab.setText('')
  46.  
  47.     def open(self):
  48.         filename = QtW.QFileDialog.getOpenFileName(self, 'Open file')[0]
  49.         if not filename:
  50.             return
  51.         with codecs.open(filename, 'r', 'utf-8') as f:
  52.             txt = f.read()
  53.         self.tab.setText(txt)
  54.  
  55.     def save(self):
  56.         filename = QtW.QFileDialog.getSaveFileName(self)[0]
  57.         if not filename:
  58.             return
  59.         txt = self.tab.toPlainText()
  60.         with codecs.open(filename, 'w', 'utf-8') as f:
  61.             f.write(txt)
  62.  
  63.     def search(self):
  64.         query, ok = QtW.QInputDialog.getText(self, 'Text search', u'Input text to find')
  65.         if ok:
  66.             text = self.tab.toPlainText()
  67.             pattern = re.compile(query)
  68.             word = re.search(pattern, text)
  69.             start, end = word.span()
  70.             self.tab.setFocus()
  71.             self.movement(start, end)
  72.  
  73.     def movement(self, start, end):
  74.         cursor = self.tab.textCursor()
  75.         cursor.setPosition(start)
  76.         cursor.movePosition(QtG.QTextCursor.Right, QtG.QTextCursor.KeepAnchor, end - start)
  77.         self.tab.setTextCursor(cursor)
  78.  
  79.  
  80. def main():
  81.     app = QtW.QApplication([])
  82.     window = MainWindow()
  83.     app.exec_()
  84.  
  85.  
  86. if __name__ == '__main__':
  87.     main()
Add Comment
Please, Sign In to add comment