# 一个文本编辑器
import os
import sys
import pyautogui
import keyword
# import pkgutil
from PyQt5.Qsci import QsciLexerPython, QsciScintilla, QsciAPIs
from PyQt5.QtCore import QSize, Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QFileDialog, QMessageBox, QFrame, QPushButton
from PyQt5.QtGui import QIcon, QCloseEvent, QFont, QColor, QImage, QDragEnterEvent, QDropEvent
__size__ = pyautogui.size()
__authorWords__ = r"""
******************************************************************************\\
*** \\
*** \\
*** 欢迎使用简雅Pad++。 \\
*** 简雅Pad++是开源的,不支持您的任何商业化用途. \\
*** 简雅Pad++为您提供了简约智能的接口,你可以使用这些接口轻松扩展软件功能. \\
*** 希望您在拓展功能的同时,始终谨记简雅Pad++的宗旨. \\
*** ——简明优雅 \\
*** 对我而言,此编辑器仍然有很多bug亟待解决. \\
*** 简雅Pad++的设计用途更在于初学者对Python(也可以是别的语言,您只需按照我 \\
*** 在Help里面的简明提示就可以把简雅Pad++拓展为别的语言编辑器和功能)的学习 \\
*** 以及简单应用。 \\
*** \\
*** \\
**************************************************************************************\\
"""
print(__authorWords__)
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowIcon(QIcon('../ico/logo.ico'))
self.resize(800, 600)
self.setMinimumSize(800, 600)
self.frame = QFrame()
self.textEdit = QsciScintilla(self.frame)
self.setStyleSheet('background-color : skyblue;'
'color : black; '
'font-weight : bold;')
self.textEdit.setStyleSheet('''background-color: blue;''')
self.__lexer = QsciLexerPython(self.textEdit)
self.__api = QsciAPIs(self.__lexer) # 代码提示列表
# self.setWindowOpacity(0.9)
self.checkBox = []
self.frame.setGeometry(0, 0, 800, 400)
self.initUI()
def initUI(self):
self.textEdit.setGeometry(0, 0, __size__[0], __size__[1])
# 文本设置
self.textEdit.setUtf8(True)
self.textEdit.setWrapIndentMode(QsciScintilla.WrapIndentSame)
self.textEdit.setEolVisibility(False) # 换行尾标
# 会影响光标周围空格时Tab键的行为。如果设置为False,则每当按下Tab键时,编辑器只需插入n个空格(或“\t”字符)。
# 但是,如果设置为True,编辑器会将第一个非空格字符推送到下一个缩进级别!
self.textEdit.setTabIndents(False)
# 文本缩进
self.textEdit.setIndentationsUseTabs(True) # 设置缩进使用tab
self.textEdit.setTabWidth(8) # tab按键相当于空格数目
self.textEdit.setIndentationGuides(True) # 设置显示虚线垂直线来指示缩进
self.textEdit.setAutoIndent(True) # 设置自动对齐缩进
# 布局
self.textEdit.setScrollWidth(600) # 设置默认滚动条长度
# 文本编辑区渲染
self.textEdit.setCaretForegroundColor(QColor("red")) # 光标颜色
self.textEdit.setCaretLineVisible(True) # 是否显示行颜色
self.textEdit.setCaretLineBackgroundColor(QColor('skyblue')) # 行颜色
self.textEdit.setFont(QFont('隶书'))
self.textEdit.setCaretWidth(2) # 插入记号的宽度
# self.textEdit.
# 边距设置
"""
MarginType是枚举变量 :
NumberMargin:行号栏。记住,当行号增⻓时,边界宽度不会自动调整。因此,如果需要,必须要手动调整其宽度。
SymbolMargin:符号栏,包括用于折叠的符号。
SymbolMarginDefaultForegroundColor:符号栏使用默认前景色作为其背景色。
SymbolMarginDefaultBackgroundColor:符号栏使用默认背景色作为其背景色。
SymbolMarginColor:符号栏使用setMarginBackgroundColTextMarginRightJustifiedor()
设置的颜色作为其背景色。
TextMargin:文本栏。⽂本栏用于显示文本。字体大小、族、颜色都是可选的。
TextMarginRightJustified:边界栏包含右对齐的样式文本。
"""
self.textEdit.setMarginType(0, QsciScintilla.NumberMargin) # 设置区域0边距类型
self.textEdit.setMarginWidth(0, "0000") # 设置区域0边距宽度
self.textEdit.setMarginType(1, QsciScintilla.SymbolMarginDefaultForegroundColor) # 设置区域0边距类型
self.textEdit.setMarginWidth(1, "0000") # 设置区域1边距类型
# pointIco1 = QImage("../ico/chooseLine.ico").scaled(QSize(16, 16))
# pointIco2 = QImage("../ico/chooseLine.ico").scaled(QSize(16, 16))
# pointIco3 = QImage("../ico/chooseLine.ico").scaled(QSize(16, 16))
pointIco4 = QImage("../ico/chooseLine.ico").scaled(QSize(16, 16))
# self.textEdit.markerDefine(pointIco1, 0)
# self.textEdit.markerDefine(pointIco2, 1)
# self.textEdit.markerDefine(pointIco3, 2)
self.textEdit.markerDefine(pointIco4, 3)
self.textEdit.setMarginMarkerMask(1, 0b11111) # 设置边距标记蒙版
self.textEdit.setMarginSensitivity(1, True) # 区域1添加实现
self.textEdit.marginClicked.connect(self.margin_left_clicked) # 设置左键添加行指引
# self.textEdit.marginRightClicked.connect(self.margin_right_clicked) # 设置右键去除行指引
self.textEdit.setMarginsForegroundColor(QColor("yellow")) # 行索引颜色
self.textEdit.setMarginsBackgroundColor(QColor('black')) # 左侧边背景颜色
self.textEdit.setStyleSheet("margin-left : 10px;")
# self.textEdit.setMarginSensitivity(0, True) # 和下面一行是一起作用的,设置点击区域0的触发函数
# self.textEdit.marginClicked.connect(self.func)
# 功能
self.textEdit.setLexer(self.__lexer) # Python语法高亮
self.textEdit.setAutoCompletionSource(QsciScintilla.AcsAll) # 自动补全
self.textEdit.setAutoCompletionThreshold(1) # 就是你输入多少个字母时候给你代码补全提示
self.textEdit.setAutoCompletionCaseSensitivity(True) # 区分大小写
self.textEdit.setAutoCompletionReplaceWord(False) # 不实现单词覆盖替换行
self.textEdit.setAutoCompletionUseSingle(QsciScintilla.AcusExplicit) # 单选项行为此选项选择当自动完成窗口中只有一个自动完成选项可用时发生的情况。
__apiHelp = keyword.kwlist + dir() + dir(__builtins__) # 往下几步都是制作代码自动补全
# pkgLocal: list[pkgutil.ModuleInfo] = list(pkgutil.iter_modules())
# pkgName = [i.name for i in pkgLocal]
# __apiHelp += pkgN
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Python和Sintilla的Python编辑器,支持代码高亮,自定义补全(拥有基础补全功能),文件保存打开,检测缩进,代码行标记,你甚至可以简单的修改接口,改成任意编程语言(包括你自己的编程语言)的接口,还有代码高亮以及自定义自动补全,尤其适合编程小白提升报错技巧 简单操作演示链接 : https://www.bilibili.com/video/BV1VT411P7km/?vd_source=9ab64e93362442ee5ac84c1c2078f8e7 注意 : 你可以通过简单的演示,可以把Python编辑器编程任何语言的编辑器,支持代码高亮、Qsintilla提供了这些支持
资源详情
资源评论
资源推荐
收起资源包目录
简雅Pad++.zip (13个子文件)
简雅Pad++
bin
简雅Pad++拓展版.py 14KB
extend.py 2KB
简雅Pad++拓展版.exe 40.96MB
src
简雅Pad++拓展版.spec 916B
wyq.html 1KB
ico
logo.ico 17KB
open.ico 17KB
size.ico 17KB
chooseLine.ico 4KB
color.ico 17KB
bg.jpg 1.03MB
save.ico 17KB
help.ico 17KB
共 13 条
- 1
「已注销」
- 粉丝: 42
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0