wxpython 中的 wx.TheClipboard 是一个用于操作剪贴板的类. 首先我们要调用 Open() 方法来取得剪贴板的所有权.
如果成功获取,它将返回真值. 接着我们就可以通过 SetData() 方法将数据放在剪贴板上了. 同时该方法会接受一个简单的数据对象.
专题:wxpython中文教程
关于数据对象,有 3 个预定义的简单数据对象:
要从剪贴板中取回数据,你可以调用 GetData() 方法. 它也是接受的简单数据对象.
最后,要使用 Close() 方法来关闭剪贴板并退回其使用权.
以下 clipboard.py 示例演示了在 wxPython 中剪贴板的简单用法.
例子:
#!/usr/bin/python
#coding=utf-8
#clipboard.py
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title,
wx.DefaultPosition, wx.Size(320, 300))
panel1 = wx.Panel(self, -1)
self.tc1 = wx.TextCtrl(panel1, -1, '', (50, 50), (85, -1))
self.tc2 = wx.TextCtrl(panel1, -1, '', (180, 50), (85, -1))
wx.Button(panel1, 1, '复 制', (50, 200))
wx.Button(panel1, 2, '粘 贴', (180, 200))
self.Bind(wx.EVT_BUTTON, self.OnCopy, id=1)
self.Bind(wx.EVT_BUTTON, self.OnPaste, id=2)
self.Center()
def OnCopy(self, event):
text = self.tc1.GetValue()
if wx.TheClipboard.Open():
wx.TheClipboard.Clear()
wx.TheClipboard.SetData(wx.TextDataObject(text))
wx.TheClipboard.Close()
def OnPaste(self, event):
if wx.TheClipboard.Open():
td = wx.TextDataObject()
success = wx.TheClipboard.GetData(td)
wx.TheClipboard.Close()
if not success:
return
text = td.GetText()
if text: self.tc2.SetValue(text)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'clipboard.py')
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()
这里有两个文本控件 (textcontrol) 以及两个按钮.
输入一些文本到第一个文本控件,并用这两个按钮来把文本粘贴到第二个文本控件.
注意,如何从 wx.TextDataObject 中取出数据: