write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
讨论新闻组及文件
估计这种小的知识会有几篇文章,除了全局快捷键部分外,其他的都比较简单,都是我实现
“onekeycodehighlighter"中碰到的一些小问题,这里顺面整理一下。事实上,稍微懂一点的人,去看看one key code highlighter的源代码都能明白了。这里相当于将其详细的剖析一下。。。。。。。另外,实现上用Python+PyQt,事实上,主要的部分是对Qt的一些类的使用,所以其实看懂了C++的Qt中使用上是一样的。啥?你看不懂Python?好的,这就是我为什么靠C++吃饭,却学习JAVA,JavaScript,Lua,Python,Bash的一个原因,不然你看不懂别人在写啥-_-!(当然,我基本上也就学到能看懂)
对于pyQt完全不懂的,这里也不用看了,《
pyqt的学习(1) 入门》,《
pyqt(2) 对话框...》可以看看,但是写的有点乱,因为那时候我懂得也少(不代表现在就懂的多了)
概述
系统剪贴板的操作在Qt中有原生的支持,这点很强大,操作起来比Windows本身附带的要简单的多,更重要的是,这是跨平台的。
Windows中的剪贴板其实很简单,只有一种,就是你选择然后CTRL-C的那一个。在Vim中用寄存器"+"存储,(不懂就算了)。Linux中剪贴板有两种,一种是鼠标选中后立刻就生效的,在Vim中用寄存器"+"存储,称作select剪贴板,另外一种就是类似Windows下的那种剪贴板,vim中用寄存器"*"存储。
剪贴板作为应用程序中较为通用的一种共享数据的方式,应用较为广泛,就我所知,这好像是唯一一种用户可以很方便操作的应用程序共享数据的途径,其他的如Socket等,编程的时候是很容易实现,用户要操作就难了。
操作
简单的剪贴板操作,很简单,Qt中用QClipboard类来表示
在Qt中用
clipboard = QtGui.QApplication.clipboard()
获取到剪贴版的对象,然后用text表示获取到文本数据,(类似CTRL-P),用setText来设置文本数据。(类似CTRL-C)
更深入的操作
对于普通的文本操作,这两个函数就足够了。以前我也是这样做的。但是,我发现一个现象,那就是复制网页上的数据后,在Google Document上paste的时候,是直接可以复原原来的网页内容的(虽然常常有些偏差),但是我转换后的HTML源码是用setText设置到剪贴板中的话,paste出来的就是源码,说明肯定里面还有蹊跷,要是我的转换工具,直接粘贴就可以在Google Document中出现语法高亮过的文字多好啊,于是我查看了一下QClipboard类,及MSDN。果然,在剪贴板中保存的不仅仅是文字,还可以是一些有格式的内容,在windows中可以保存OLE的东西。。。。Qt中将其统一划分为MimeData。
看看QMimedata这个类就会很惊喜,包括了HTML,Image等很多的东西,当然我要的就是HTML。
于是乎,我通过
mimeData = QtCore.QMimeData()
mimeData.setHtml(clipboard.text())
clipboard.setMimeData(mimeData)
来设置一个转换过的HTML源码,此时就能直接在Google Document上通过粘贴来得到高亮过的代码了:)
但是,在语法文本源代码的地方此时的粘贴就无效了,因为已经没有文本了,经过试验,Qt中不同的数据时相互不影响的,于是再改了一下:
def setClipboardMimeToHTML():
clipboard = QtGui.QApplication.clipboard()
mimeData = QtCore.QMimeData()
mimeData.setText(clipboard.text())
mimeData.setHtml(clipboard.text())
clipboard.setMimeData(mimeData)
哈哈,能够粘贴HTML的地方,显示的就是HTML,只能显示文本的地方,粘贴的即是HTML的源码。好不强大,这也就是最后,你们在
“onekeycodehighlighter" 中实际使用的效果。
总之,我是对自己做的这个工具很满意了:)
完整源代码获取说明
由于篇幅限制,本文一般仅贴出代码的主要关心的部分,代码带工程(或者makefile)完整版(如果有的话)都能用Mercurial在Google Code中下载。文章以博文发表的日期分目录存放,请直接使用Mercurial克隆下库:
https://onekeycodehighlighter.googlecode.com/hg/
Mercurial使用方法见《分布式的,新一代版本控制系统Mercurial的介绍及简要入门》
要是仅仅想浏览全部代码也可以直接到google code上去看,在下面的地址:
http://code.google.com/p/onekeycodehighlighter/source/browse/
原创文章作者保留版权 转载请注明原作者 并给出链接
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
分享到:
相关推荐
《Qt5 PyQt 5实战指南—手把手教你掌握100个精彩案例》 《Qt5 PyQt 5实战指南—手把手教你掌握100个精彩案例》 《Qt5 PyQt 5实战指南—手把手教你掌握100个精彩案例》
在这种情况下,你需要确保你的系统路径中包含了正确的Qt库路径,或者将缺失的DLL文件复制到你的应用程序目录下。在本例中,"Qt/PyQt无法连接数据库问题解决所需的两个dll文件"可能指的是`qsqlXXX.dll`文件,其中XXX...
基于 PyQt5 的 Fluent Design 风格组件库
PyQt是Python中用于构建GUI应用程序的一个强大工具包,它基于Qt框架,并由Riverbank Computing开发维护。PyQt支持多个版本,其中PyQt5是最常用且最新的版本之一。通过PyQt5,开发者能够利用其丰富的组件库来构建跨...
【作品名称】:基于Python/PyQT5的产生式动物识别系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于Python/...
资源分类:Python库 所属语言:Python 资源全名:QT-PyQt-PySide-Custom-Widgets-0.1.8.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Opencv/PyQt-鼠标控制界面(二)
Opencv/PyQt——鼠标控制界面(一)
Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具...
这里导入了多个模块,包括`pymysql`用于数据库操作,以及PyQt5中的多个组件,用于实现界面元素和事件处理。 ##### 2. 定义登录界面类 ```python class Login(QtWidgets.QDialog): def __init__(self): super...
这个特定的版本"PyQt5_gpl-5.9.tar.gz"对应于Qt 5.9.0和sip 4.19.3,适用于Ubuntu 16.04操作系统。值得注意的是,虽然在这个系统上可以顺利安装并运行,但其他版本的Python、Qt或操作系统可能需要不同的配置步骤,...
1. **剪贴板(Clipboard)**:操作系统提供的一种临时存储空间,用于暂时存放用户希望复制或剪切的数据。 2. **PyQt5**:是Python中一个常用的GUI库,它是Qt库的一个Python绑定版本。它支持多种数据格式的操作,并且...
6. **跨平台兼容**:由于PyQt5基于Qt库,所以创建的UI界面可以无缝地运行在Windows、macOS和Linux等不同操作系统上,这得益于Qt的跨平台特性。 总结一下,本教程的重点在于掌握QtDesigner的设计技巧以及如何将其与...
本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
以上这篇在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:PyQt5 实现字体大小自适应分辨率的方法pyqt5...
可以在所有主流的操作系统上运行( Unix 、 Windows 、 Mac ) 。 PyQt 有两种许可,开发者可以在 GPL 和商业许可证之间做出选择。之前, PyQt 的 GPL 许可证只在 Unix 系统上可用,但在 PyQt4 之后,其 GPL 许可证...
避免大家一一查找,包含:音乐界面客户端,管理系统客户端,CAD的QT客户端,虚拟币交易所监控客户端,数据分析的客户端,流程图客户端,自动化测试用例编辑器,基于pyside架构的适合自定义开发的客户端,登陆界面...
- `audio.ico`、`web.png`、`max.png`、`med.png`、`min.png`:这些文件用于设置应用程序的图标和按钮图像,展示了PyQt5中如何加载和显示图像资源,以及如何自定义控件外观。例如,可以使用QIcon类来加载ico图标,...
在Python的GUI编程领域,PyQt是一个非常强大的工具,它基于Qt库,为开发者提供了创建图形用户界面(GUI)的能力。PyQt模块化设计模板是一个高效的方法,可以帮助开发者组织和管理复杂的GUI应用程序代码,提高代码的...
剪贴板是操作系统中一个非常基础且重要的功能,它允许用户在不同的应用程序之间复制和粘贴数据。在Windows、macOS、Linux等操作系统中,剪贴板都可以存储文本、图像、文件等多种类型的数据。监视剪贴板内容的技术,...