# 一个文本编辑器
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
「已注销」
- 粉丝: 42
- 资源: 6
最新资源
- S7-200SMART多段插补库(含使用说明+示例程序).rar
- 毕业设计-基于SSM协同过滤音乐推荐管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM小区物业管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM网上医院预约挂号系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM学生毕业设计-论文选题系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM学而优奖学金评定管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于thinkphp6.0+mysql+bootstrap4的疫情防控系统全部资料+详细文档+高分项目+源码.zip
- 3-各地区-不同行业-就业、失业、工资144个指标(1990-2021年).zip
- MATLAB代码:计及源-荷双重不确定性的电厂 微网日前随机优化调度 关键词:电厂 微网 随机优化 随机调度 源-荷双重不确定性 电厂调度 参考文档:Virtual power plant
- rds.zip
- common.zip
- 毕业设计-基于VUe+Element的人事管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于Structs+Hibernate+Spring+mahout+bootstrap+mysql 实现的网上书店前后台系统全部资料+详细文档+高分项
- 毕业设计-基于vue+Python在线考试系统前端全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于vue2的在线答题系统前端全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于VUE+PHP的高校校友信息管理系统毕业设计-全部资料+详细文档+高分项目+源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0