Skip to content

Commit a821bfb

Browse files
committed
add more function on editor
1 parent a5681d9 commit a821bfb

File tree

2 files changed

+101
-5
lines changed

2 files changed

+101
-5
lines changed

text-operation/editor/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
run:
2+
python qt_editor.py

text-operation/editor/qt_editor.py

Lines changed: 99 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,120 @@
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+
112
import sys
13+
from pathlib import Path
214

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)
418

519

620
class Editor(QMainWindow):
21+
722
def __init__(self):
823
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)
931
self.init_ui()
1032

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
1439
newAct = QAction('New', self)
40+
openAct = QAction('Open', self)
41+
autoSave = QAction('AutoSavle', self, checkable=True)
1542
settingAct = QAction('Setting', self)
1643
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
1752
fileMenu.addAction(newAct)
53+
fileMenu.addAction(openAct)
54+
fileMenu.addAction(autoSave)
1855
fileMenu.addAction(settingAct)
1956
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
2087
self.setGeometry(500, 300, 800, 600)
21-
self.setWindowTitle('文本编辑器0.0.1')
88+
self.setWindowTitle(self.title)
2289
self.show()
2390

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+
24118

25119
if __name__ == "__main__":
26120
app = QApplication(sys.argv)

0 commit comments

Comments
 (0)