使用wxPython获取系统剪贴板中的数据的教程


Posted in Python onMay 06, 2015

涉及到开发桌面程序,尤其是文本处理,剪贴板就很常用,不像 java 中那么烦锁,wxpython 中访问剪贴板非常简单,寥寥几句足以。

# 取得剪贴板并确保其为打开状态
text_obj = wx.TextDataObject()
wx.TheClipboard.Open()
if wx.TheClipboard.IsOpened() or wx.TheClipboard.Open():
  # do something...
  wx.TheClipboard.Close()

取值:

if wx.TheClipboard.GetData(text_obj):
  text = text_obj.GetText()

写值:

text_obj.SetText(‘要写入的值')
wx.TheClipboard.SetData(text_obj)

下面的例子中,点击 Copy 会将文本框中的值复制到剪贴板,点击 Paste 会将剪贴板中的文本粘贴到文本框中。

"""
Get text from and put text on the clipboard.
"""

import wx

class MyFrame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, None, title='Accessing the clipboard', size=(400, 300))

    # Components
    self.panel = wx.Panel(self)
    self.text = wx.TextCtrl(self.panel, pos=(10, 10), size=(370, 220))
    self.copy = wx.Button(self.panel, wx.ID_ANY, label='Copy', pos=(10, 240))
    self.paste = wx.Button(self.panel, wx.ID_ANY, label='Paste', pos=(100, 240))

    # Event bindings.
    self.Bind(wx.EVT_BUTTON, self.OnCopy, self.copy)
    self.Bind(wx.EVT_BUTTON, self.OnPaste, self.paste)

  def OnCopy(self, event):
    text_obj = wx.TextDataObject()
    text_obj.SetText(self.text.GetValue())
    if wx.TheClipboard.IsOpened() or wx.TheClipboard.Open():
      wx.TheClipboard.SetData(text_obj)
      wx.TheClipboard.Close()

  def OnPaste(self, event):
    text_obj = wx.TextDataObject()
    if wx.TheClipboard.IsOpened() or wx.TheClipboard.Open():
      if wx.TheClipboard.GetData(text_obj):
        self.text.SetValue(text_obj.GetText())
      wx.TheClipboard.Close()

app = wx.App(False)
frame = MyFrame()
frame.Show(True)
app.MainLoop()

Python 相关文章推荐
Python按行读取文件的简单实现方法
Jun 22 Python
Pycharm学习教程(1) 定制外观
May 02 Python
Python正则表达式常用函数总结
Jun 24 Python
python中requests库session对象的妙用详解
Oct 30 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
selenium+python实现1688网站验证码图片的截取功能
Aug 14 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
Pandas 数据编码的十种方法
Apr 20 Python
用Python遍历C盘dll文件的方法
May 06 #Python
使用Python压缩和解压缩zip文件的教程
May 06 #Python
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 #Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 #Python
python中黄金分割法实现方法
May 06 #Python
使用rpclib进行Python网络编程时的注释问题
May 06 #Python
pymongo给mongodb创建索引的简单实现方法
May 06 #Python
You might like
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php 静态化实现代码
2009/03/20 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
Python中格式化format()方法详解
2017/04/01 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
"引用"与多态的关系
2013/02/01 面试题
入党自我鉴定范文
2013/10/04 职场文书
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python