PyQt6实战6--高亮

news2024/11/19 18:43:23

PyQt6实战3--sql查询器-CSDN博客

在sql查询器的基础上添加了sql语法的高亮

运行效果:

代码:

只需要在原来的代码上添加一行

        rightTopLayout = QVBoxLayout()
        rightTopLayout.addWidget(QLabel("输入sql:"))
        self.sql = QTextEdit()
#加一行高亮,把edit的document穿进去即可
        self.highlighter = SqlHighlighter(self.sql.document())
        rightTopLayout.addWidget(self.sql, stretch=2)
        self.queryLayout = QHBoxLayout()
        self.query_button = QPushButton("查询")
        self.queryLayout.addWidget(self.query_button)
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
from PyQt6.QtCore import *

def format(color, style=''):
    """
    Return a QTextCharFormat with the given attributes.
    """
    _color = QColor()
    if type(color) is not str:
        _color.setRgb(color[0], color[1], color[2])
    else:
        _color.setNamedColor(color)

    _format = QTextCharFormat()
    _format.setForeground(_color)
    if 'bold' in style:
        _format.setFontWeight(QFont.Weight.Bold)
    if 'italic' in style:
        _format.setFontItalic(True)
    return _format

STYLES = {
    'keyword': format([200, 120, 50], 'bold'),
    'operator': format([150, 150, 150]),
    'brace': format('darkGray'),
    'defclass': format([220, 220, 255], 'bold'),
    'string': format([20, 110, 100]),
    'string2': format([30, 120, 110]),
    'comment': format([128, 128, 128]),
    'self': format([150, 85, 140], 'italic'),
    'numbers': format([100, 150, 190]),
}

class SqlHighlighter(QSyntaxHighlighter):
    
    keywords = [
        'select', 'from', 'update', 'where', 'set', 'order', 'by', 'group', 'having',
        'insert', 'into', 'delete', 'create', 'table', 'drop', 'alter', 'index',
        'and', 'or', 'not', 'like', 'between', 'is', 'null', 'distinct',
        'count', 'sum', 'avg', 'max', 'min', 'limit', 'offset', 'join',
        'inner', 'outer', 'left', 'right', 'on', 'as', 'desc', 'asc'
    ]
    
    braces = [
        '\{', '\}', '\(', '\)', '\[', '\]',
    ]
    
    def __init__(self, document):
        super().__init__(document)
        
        rules = []
        
        # Keyword, operator, and brace rules
        rules += [(r'\b%s\b' % w, 0, STYLES['keyword'])
                  for w in SqlHighlighter.keywords]
        rules += [(r'%s' % b, 0, STYLES['brace'])
                  for b in SqlHighlighter.braces]
        self.rules = [(QRegularExpression(pat), index, fmt) for (pat, index, fmt) in rules]
        
    def highlightBlock(self, text: str) -> None:
        """Apply syntax highlighting to the given block of text.
        """
        # Do other syntax formatting
        for expression, nth, format in self.rules:
            matchIterator = expression.globalMatch(text)
            while matchIterator.hasNext():
                # print(rule.pattern.pattern())
                match = matchIterator.next()
                self.setFormat(match.capturedStart(), match.capturedLength(), format)

        self.setCurrentBlockState(0)

代码地址

GitHub - chunlaiqingke/Tiny-Tool

公众号:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1573056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

清明假期作业

1、实现文件夹的拷贝功能 注意判断被拷贝的文件夹是否存在&#xff0c;如果不存在则提前 不考虑递归拷贝的问题 #include<myhead.h> int my_copy(char* name,const char *p) {char buf[256]"./";strcat(buf,p);strcat(buf,"/");strcat(buf,name);in…

文件夹批量重命名,高效翻译支持中文转日语,轻松管理文件

在信息爆炸的时代&#xff0c;我们每天都在与大量的文件打交道。你是否曾为如何高效管理这些文件而苦恼&#xff1f;是否曾在中文与日语文件之间转换时感到无助&#xff1f;今天&#xff0c;我要为大家介绍一款神奇的工具——文件批量改名高手&#xff0c;它能帮助你批量重命名…

【C++】map set 底层刨析

文章目录 1. 红黑树的迭代器2. 改造红黑树3. map 的模拟实现4. set 的模拟实现 在 C STL 库中&#xff0c;map 与 set 的底层为红黑树&#xff0c;那么在不写冗余代码的情况下使用红黑树同时实现 map 与 set 便是本文的重点。 1. 红黑树的迭代器 迭代器的好处是可以方便遍历&…

二季度必胜!创维汽车季度营销会议探索未来新可能

总结旧岁月&#xff0c;开启新篇章。2024年4月2日&#xff0c;创维汽车召开“向死而生&#xff0c;破茧成蝶”季度营销会议。本次会议总结复盘了一季度营销团队的工作并对即将到来的二季度进行了规划部署。创维集团、创维汽车创始人黄宏生先生&#xff0c;创维汽车总裁&#xf…

算法——链表(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享链表专题的第一部分 如果有不足的或者错误的请您指出! 1.链表常用技巧总结 1.1引入虚拟头结点 在力扣上,基本提供的链表题目都是"无头的",但是针对无头链表,我们最…

C语言-预定义符号

编译和链接&#xff08;基础速通版&#xff09;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137182220 预定义符号 包含 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使⽤&#xff0c;预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的…

C++从入门到精通——初步认识面向对象及类的引入

初步认识面向对象及类的引入 前言一、面向过程和面向对象初步认识C语言C 二、类的引入C的类名代表什么示例 C与C语言的struct的比较成员函数访问权限继承默认构造函数默认成员初始化结构体大小 总结 前言 面向过程注重任务的流程和控制&#xff0c;适合简单任务和流程固定的场…

R155/R156:汽车网络安全新法规快速指南

R155/R156:汽车网络安全新法规快速指南 随着国际机构进入网络安全领域,制定法规、标准和指南,公众在其使用的车辆中享受更好的网络安全保护指日可待。随着时间的推移,车辆网络安全将不断发展以应对不断变化的网络威胁。 欧洲经济委员会 (ECE) 的 R155 和 R156 法规旨在应…

Day30 线程安全之窗口售票问题(含代码)

Day30 线程安全之窗口售票问题&#xff08;含代码&#xff09; 一、需求&#xff1a; 铁道部发布了一个售票任务&#xff0c;要求销售1000张票&#xff0c;要求有3个窗口来进行销售&#xff0c; 请编写多线程程序来模拟这个效果&#xff08; 注意&#xff1a;使用线程类的方式…

数据库 06-04 恢复

01 一.事务故障 二.系统 三.磁盘 02. 重点是稳定存储器 组成

【IEEE STD 1801】——Introduction

Introduction 本标准的目的是提供便携、低功耗的设计规范&#xff0c;这些规范可以在整个电子系统设计、分析、验证和实现流程中与各种商业产品一起使用。 当电子设计自动化(EDA)行业在20世纪80年代开始创建用于指定、仿真和实现数字电子电路的功能规范的标准时&#xff0c;主…

当下鸿蒙开发热潮,大前端开发有没有必要搞!!!

鸿蒙到底好不好&#xff1f;要不要搞&#xff1f; Android开发反正目前工作感觉也不好找&#xff0c;即便是上海这样的大城市也难搞&#xff0c;人员挺饱和的。而且年前裁员的公司那么多&#xff0c;再看自己&#xff0c;年龄不是优势&#xff1b;技术不是优势&#xff0c;想想…

DHCP-PXE

Dynamic Host Configuration Protocol 动态主机配置协议 1.Selinux 调试为Permission 防火墙配置 搭建DHCP的主机必须有一个静态地址&#xff0c;提前配置好 安装DHCP软件 服务名为dhcpd DHCP地址分配四次会话&#xff0c; DISCOVERY发现 OFFER 提供 REQUEST 回应 A…

PHP实现nginxPhp错误日志提取统计工具(路径+错误行+报错信息+次数排序)

粘贴PHP错误日志内容(NGINX 下PHP网站错误日志)。 作用:提取PHP Warning/Notice:路径错误行报错信息按出现次数排序。 以上已满足本人自己LNMP环境的调试需求&#xff0c;其他环境自己评估是否可用。 <?php //整理与分享&#xff1a;yujianyue<15058593138qq.com> $…

国家开放大学电大《钢结构》形考任务答案

电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&#xff0c;包含国家开放大学、广东开放大学、超星等等多个平台题库&#xff0c;考试作业必备神器。 公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#x…

腾讯云-域名注册购买实名流程

1&#xff0c;注册并完成实名腾讯云账号 账号实名认证和后续要完成的域名实名认证应为同一主体单位。否则域名实名会不通过 参考链接 腾讯云账号实名 – 易极赞自助建站 2&#xff0c;进入腾讯云域名注册购买地址 推荐购买com&#xff0c;cn&#xff0c;net主流域名&#xf…

LabVIEW深度学习

目录 一、配置环境1.1、显卡选择1.2、下载显卡驱动1.3、下载并安装Anaconda1.4、配置Anaconda软件包下载服务器1.5、配置虚拟环境tf_gpu1.6、安装vscode1.7、安装tensorflow1.8、下载安装Git1.9、安装TensorFlow Object Detection API框架1.10、安装依赖的python软件包1.11、配…

Centos7下docker安装jenkins【使用docker-compose图文教程】

个人记录 前置条件&#xff1a;安装Docker与Docker-compose Centos7安装Docker与Docker-compose【图文教程】 查看jenkins最新的版本 https://www.jenkins.io/download/ 配置docker-compose.yml vim docker-compose.yml按i进行编辑模式&#xff0c;粘贴如下内容。把image里…

After Effects 2024:创意无界,想象成真mac/win版

在数字艺术飞速发展的今天&#xff0c;After Effects 2024已经站在了视觉特效和动态图形设计的最前沿。这款软件不仅继承了之前版本的强大功能&#xff0c;更在细节和效率上进行了全方位的优化和升级。 After Effects 2024软件获取 After Effects 2024为用户提供了更加丰富的特…

A - Penalty Kick

A - Penalty Kick 我又又又回来啦 题目&#xff1a; Problem Statement Takahashi will have N N N penalty kicks in a soccer match. For the i i i-the enalty kick, he will fail if i i i is a multiple of 3 3 3, and succeed otherwise . . . Print the resul…