当前位置: 首页 > news >正文

建设一个行业性的网站价格长春高铁站

建设一个行业性的网站价格,长春高铁站,wordpress查询页面id,四川手机网基于python与pyqt实现的一个简单的文本编辑器。 主要功能为文件的操作:打开文件,新建文件,保存与退出, 编辑功能主要为:粘贴,剪切,复制,以及查找功能 关于字数统计,因…

基于python与pyqt实现的一个简单的文本编辑器。

主要功能为文件的操作:打开文件,新建文件,保存与退出,

编辑功能主要为:粘贴,剪切,复制,以及查找功能

关于字数统计,因为字符原因是不够准确的,正常情况下背景为白色,但是黑色更护眼,可以基于代码进行相应的一个调整。

import sys
import re
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QStatusBar, QMenuBar, QTextEdit, QDialog, \QVBoxLayout, QLineEdit, QPushButton, QListWidget, QMessageBox, QLabel, QFileDialog
from PyQt5.QtGui import QSyntaxHighlighter, QTextCharFormat, QColor, QFont, QTextCursor, \QTextDocument  # 添加QTextDocument到导入列表
from PyQt5.QtCore import QRegularExpressionclass MyWindow(QMainWindow):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.setWindowTitle("一个黑客创业者:文本编辑器")# 设置主部件self.textEdit = QTextEdit()self.setCentralWidget(self.textEdit)# 样式设置self.textEdit.setStyleSheet("""background-color: #2d2d2d;color: #ffffff;font-size: 14px;font-family: "Consolas";""")self.syntaxHighlighter = SyntaxHighlighter(self.textEdit.document())# 状态栏self.statusBar = QStatusBar()self.setStatusBar(self.statusBar)self.statusBar.showMessage('状态栏')self.statusBar.setStyleSheet("""background-color: #3f3f3f;color: #ffffff;font-size: 12px;""")# 菜单栏menu_bar = QMenuBar()self.setMenuBar(menu_bar)menu_bar.setStyleSheet("""background-color: #3f3f3f;color: #ffffff;font-size: 14px;""")# 文件菜单file_menu = menu_bar.addMenu("文件")self.create_file = file_menu.addAction("新建")self.create_file.setShortcut('Ctrl+N')self.create_file.triggered.connect(self.newFile)self.open = file_menu.addAction("打开")self.open.setShortcut("Ctrl+O")self.open.triggered.connect(self.openFile)self.save = file_menu.addAction("保存")self.save.setShortcut("Ctrl+S")self.save.triggered.connect(self.saveFile)self.exit = file_menu.addAction("退出")self.exit.setShortcut("Ctrl+E")self.exit.triggered.connect(qApp.quit)# 编辑菜单edit_menu = menu_bar.addMenu("编辑")edit_menu.addAction("复制").triggered.connect(self.textEdit.copy)edit_menu.addAction("粘贴").triggered.connect(self.textEdit.paste)edit_menu.addAction("剪切").triggered.connect(self.textEdit.cut)# 查找菜单search_menu = menu_bar.addMenu("查找")self.find_action = search_menu.addAction("查找")self.find_action.setShortcut("Ctrl+F")self.find_action.triggered.connect(self.showFindDialog)# 字数统计标签self.word_count_label = QLabel(self)self.statusBar.addPermanentWidget(self.word_count_label)self.update_word_count()self.textEdit.textChanged.connect(self.update_word_count)def newFile(self):self.textEdit.clear()self.statusBar.showMessage('新文件')def openFile(self):fileName, _ = QFileDialog.getOpenFileName(self, '打开文件', '', '文本文件 (*.txt);;所有文件 (*)')if fileName:with open(fileName, 'r', encoding='utf-8') as file:self.textEdit.setText(file.read())self.statusBar.showMessage('打开新文件')def saveFile(self):fileName, _ = QFileDialog.getSaveFileName(self, '保存文件', '', '文本文件 (*.txt);;所有文件 (*)')if fileName:with open(fileName, 'w', encoding='utf-8') as file:file.write(self.textEdit.toPlainText())def showFindDialog(self):find_dialog = QDialog(self)find_dialog.setWindowTitle("查找")layout = QVBoxLayout(find_dialog)self.search_edit = QLineEdit(find_dialog)self.search_button = QPushButton("查找", find_dialog)self.results_list = QListWidget(find_dialog)layout.addWidget(self.search_edit)layout.addWidget(self.search_button)layout.addWidget(self.results_list)self.search_button.clicked.connect(self.performSearch)find_dialog.exec_()def performSearch(self):query = self.search_edit.text()if not query:QMessageBox.warning(self, "警告", "请输入要查找的内容")returndocument = self.textEdit.document()cursor = QTextCursor(document)found_occurrences = Falsewhile True:cursor = document.find(query, cursor,QTextDocument.FindCaseSensitively | QTextDocument.FindWholeWords)if cursor.isNull():breakfound_occurrences = Trueselection_start = cursor.selectionStart()selection_end = cursor.selectionEnd()self.highlightFoundText(selection_start, selection_end)if not found_occurrences:QMessageBox.information(self, "信息", f"未找到 '{query}'")def highlightFoundText(self, start_pos, end_pos):extra_selections = []selection_format = QTextCharFormat()selection_format.setBackground(QColor("yellow"))selection = QTextEdit.ExtraSelection()selection.format = selection_formatselection.cursor.setPosition(start_pos, QTextCursor.MoveAnchor)selection.cursor.setPosition(end_pos, QTextCursor.KeepAnchor)extra_selections.append(selection)self.textEdit.setExtraSelections(extra_selections)def update_word_count(self):text = self.textEdit.toPlainText()words = len(re.findall(r'\b\w+\b', text))self.word_count_label.setText(f'字数: {words}')class SyntaxHighlighter(QSyntaxHighlighter):def __init__(self, parent=None):super().__init__(parent)keywordFormat = QTextCharFormat()keywordFormat.setForeground(QColor("blue"))keywordFormat.setFontWeight(QFont.Bold)commentFormat = QTextCharFormat()commentFormat.setForeground(QColor("green"))commentFormat.setFontItalic(True)stringFormat = QTextCharFormat()stringFormat.setForeground(QColor("red"))stringFormat.setFontWeight(QFont.Bold)keywords = ["def", "class", "import", "from", "if", "else", "elif", "for", "while", "return", "try", "except"]self.highlightingRules = []for word in keywords:escaped_word = re.escape(word)rule = QRegularExpression(rf"\b{escaped_word}\b")self.highlightingRules.append((rule, keywordFormat))rule = QRegularExpression(r"#[^\n]*")self.highlightingRules.append((rule, commentFormat))rule = QRegularExpression(r'"([^"\\]|\\.)*"')self.highlightingRules.append((rule, stringFormat))def highlightBlock(self, text):for pattern, format in self.highlightingRules:matchIterator = pattern.globalMatch(text)while matchIterator.hasNext():match = matchIterator.next()self.setFormat(match.capturedStart(), match.capturedLength(), format)if __name__ == "__main__":app = QApplication(sys.argv)# 应用全局样式表app.setStyleSheet("""QMainWindow {background-color: #2d2d2d;}QMenuBar {background-color: #3f3f3f;color: #ffffff;font-size: 14px;}QStatusBar {background-color: #3f3f3f;color: #ffffff;font-size: 12px;}QTextEdit {background-color: #2d2d2d;color: #ffffff;font-size: 14px;font-family: "Consolas";}QPushButton {background-color: #3f3f3f;color: #ffffff;border: 1px solid #2d2d2d;padding: 5px;font-size: 12px;}QLineEdit {background-color: #2d2d2d;color: #ffffff;border: 1px solid #2d2d2d;padding: 3px;font-size: 12px;}QListWidget {background-color: #2d2d2d;color: #ffffff;font-size: 12px;}""")w = MyWindow()w.resize(600, 400)w.show()sys.exit(app.exec_())

http://www.dtcms.com/a/437434.html

相关文章:

  • 公司网站设计的费用广州网站建设 领航科技
  • 完成网站的建设工作总结aspnet东莞网站建设价格
  • 连云港网站建设推广苏州自助建站平台
  • 建设人力资源网站目标推广软件的app
  • 长沙商城网站做网站最重要的是什么
  • 网站空间 云端怎样用flash做游戏下载网站
  • 做网站要有策划么产品销售推广方案
  • 做网站的作品思路及步骤中国商城网站建设
  • 做网站坂田做淘客网站用备案
  • 360免费建站李梦杭州网站建设app
  • 广东智能网站建设费用吉林整站优化
  • 公司建设网站的申请一流的网站建设与优化
  • 网站301多久门户建设
  • 建立类似淘宝的网站跨境电商一件代发货源平台
  • 百度网站建设教程备案域名购买交易
  • 廊坊网站建设佛山厂商郑州防疫新闻
  • 头条搜索站长平台做网站linux主机
  • 主机如何做服务器建网站图片制作pdf文件
  • 山西建网站天津哪家公司做企业网站
  • 有哪些可以做翻译的网站成都网站推广找四川冠辰
  • 比较好的设计网站推荐网站推广策划方案毕业设计
  • 做体育的网站网站分析论文
  • 手机企业网站开发网页游戏网址有哪些
  • 上海网站公网上商城网站开发公司
  • 芜湖建设路小学网站做关于灯饰的网站
  • 怎么做游戏平台网站企业建立网站的好处
  • 网站软件下载安装免费版宁波网站设计哪家公司好
  • 在国外做热情网站的风险巨人网络公司简介
  • wp网站模板安装互联网销售平台有哪些
  • 东莞企业免费模版网站建设ps制作网站效果图