| 
 | 1 | +#!/usr/bin/env python  | 
 | 2 | +# -*- coding: utf-8 -*-  | 
 | 3 | +"""  | 
 | 4 | +    editor.qt_editor  | 
 | 5 | +    ----------------  | 
 | 6 | +
  | 
 | 7 | +    text editor  | 
 | 8 | +    hope it do more  | 
 | 9 | +    :copyright: (c) 2018-09-26 by buglan  | 
 | 10 | +"""  | 
 | 11 | + | 
1 | 12 | import sys  | 
 | 13 | +from pathlib import Path  | 
2 | 14 | 
 
  | 
3 |  | -from PyQt5.QtWidgets import QApplication, QMainWindow, QAction  | 
 | 15 | +from PyQt5.QtGui import QFont  | 
 | 16 | +from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QFontDialog,  | 
 | 17 | +                             QMainWindow, QMenu, QTextEdit, qApp)  | 
4 | 18 | 
 
  | 
5 | 19 | 
 
  | 
6 | 20 | class Editor(QMainWindow):  | 
 | 21 | + | 
7 | 22 |     def __init__(self):  | 
8 | 23 |         super().__init__()  | 
 | 24 | +        self.font = QFont("Monaco", 14)  | 
 | 25 | +        self.font.setFixedPitch(True)  | 
 | 26 | +        self.title = 'simple text editor'  | 
 | 27 | +        self.textEditor = QTextEdit()  | 
 | 28 | +        self.textEditor.setFont(self.font)  | 
 | 29 | +        self.menubar = self.menuBar()  | 
 | 30 | +        self.menubar.setFont(self.font)  | 
9 | 31 |         self.init_ui()  | 
10 | 32 | 
 
  | 
11 |  | -    def init_ui(self):  | 
12 |  | -        menubar = self.menuBar()  | 
13 |  | -        fileMenu = menubar.addMenu('File')  | 
 | 33 | +    def setFileMenu(self):  | 
 | 34 | +        # fileMenu setting  | 
 | 35 | +        fileMenu = self.menubar.addMenu('File')  | 
 | 36 | +        fileMenu.setFont(self.font)  | 
 | 37 | + | 
 | 38 | +        # action  | 
14 | 39 |         newAct = QAction('New', self)  | 
 | 40 | +        openAct = QAction('Open', self)  | 
 | 41 | +        autoSave = QAction('AutoSavle', self, checkable=True)  | 
15 | 42 |         settingAct = QAction('Setting', self)  | 
16 | 43 |         exitAct = QAction('Exit', self)  | 
 | 44 | + | 
 | 45 | +        # action detail  | 
 | 46 | +        openAct.triggered.connect(self.showFileDialog)  | 
 | 47 | + | 
 | 48 | +        # autoSave set default False  | 
 | 49 | +        autoSave.setChecked(False)  | 
 | 50 | + | 
 | 51 | +        # add action on fileMenu  | 
17 | 52 |         fileMenu.addAction(newAct)  | 
 | 53 | +        fileMenu.addAction(openAct)  | 
 | 54 | +        fileMenu.addAction(autoSave)  | 
18 | 55 |         fileMenu.addAction(settingAct)  | 
19 | 56 |         fileMenu.addAction(exitAct)  | 
 | 57 | + | 
 | 58 | +    def setSettingMenu(self):  | 
 | 59 | +        # settingMenu setting  | 
 | 60 | +        settingMenu = self.menubar.addMenu('Setting')  | 
 | 61 | +        settingMenu.setFont(self.font)  | 
 | 62 | + | 
 | 63 | +        # action  | 
 | 64 | +        fontAct = QAction('Font', self)  | 
 | 65 | + | 
 | 66 | +        # action detail  | 
 | 67 | +        settingMenu.addAction(fontAct)  | 
 | 68 | + | 
 | 69 | +        # add action on settingMenu  | 
 | 70 | +        fontAct.triggered.connect(self.showFontDialog)  | 
 | 71 | + | 
 | 72 | +    def showFontDialog(self):  | 
 | 73 | +        font, ok = QFontDialog.getFont()  | 
 | 74 | + | 
 | 75 | +        if ok:  | 
 | 76 | +            #  QApplication.setFont(font)  | 
 | 77 | +            print(self.textEditor.font)  | 
 | 78 | +            self.font = font  | 
 | 79 | +            print("Display Fonts: ", font)  | 
 | 80 | + | 
 | 81 | +    def init_ui(self):  | 
 | 82 | +        self.setFileMenu()  | 
 | 83 | +        self.setSettingMenu()  | 
 | 84 | +        self.setCentralWidget(self.textEditor)  | 
 | 85 | + | 
 | 86 | +        # setting window  | 
20 | 87 |         self.setGeometry(500, 300, 800, 600)  | 
21 |  | -        self.setWindowTitle('文本编辑器0.0.1')  | 
 | 88 | +        self.setWindowTitle(self.title)  | 
22 | 89 |         self.show()  | 
23 | 90 | 
 
  | 
 | 91 | +    def contextMenuEvent(self, event):  | 
 | 92 | +        cmenu = QMenu(self)  | 
 | 93 | + | 
 | 94 | +        newAct = cmenu.addAction("New")  | 
 | 95 | +        openAct = cmenu.addAction("Open")  | 
 | 96 | +        quitAct = cmenu.addAction("Quit")  | 
 | 97 | +        action = cmenu.exec_(self.mapToGlobal(event.pos()))  | 
 | 98 | + | 
 | 99 | +        if action == newAct:  | 
 | 100 | +            pass  | 
 | 101 | + | 
 | 102 | +        if action == quitAct:  | 
 | 103 | +            qApp.quit()  | 
 | 104 | + | 
 | 105 | +        if action == openAct:  | 
 | 106 | +            pass  | 
 | 107 | + | 
 | 108 | +    def showFileDialog(self):  | 
 | 109 | +        # get current use main home full path as string  | 
 | 110 | +        main_home = Path.home().absolute().as_posix()  | 
 | 111 | +        fname = QFileDialog.getOpenFileName(self, 'Open File', main_home)  | 
 | 112 | +        if fname[0]:  | 
 | 113 | +            f = open(fname[0], 'r')  | 
 | 114 | +            with f:  | 
 | 115 | +                content = f.read()  | 
 | 116 | +                self.textEditor.setText(content)  | 
 | 117 | + | 
24 | 118 | 
 
  | 
25 | 119 | if __name__ == "__main__":  | 
26 | 120 |     app = QApplication(sys.argv)  | 
 | 
0 commit comments