前言:
目前各位老铁们对“pythonclipboard”大体比较关心,小伙伴们都需要了解一些“pythonclipboard”的相关知识。那么小编也在网摘上汇集了一些关于“pythonclipboard””的相关资讯,希望看官们能喜欢,大家一起来学习一下吧!实战wxPython系列-053
我们在使用电脑的时候都知道可以使用复制和粘贴文本。到我们复制一些东西的时候,它会进入一个名为“剪贴板”的位置。大多数程序都提供对某种类型的剪贴板的访问,无论是在程序本身还是系统剪贴板,都允许将项目复制到其他应用程序。wxPython GUI工具包还提供了剪贴板访问,您可以使用它将文本复制到程序内部,甚至复制到系统剪贴板。我们还可以将图像复制到剪贴板。
一、wx.TheClipboard
wx.TheClipboard是用于操作剪贴板的类。要使用剪贴板,需要调用全局wx.TheClipboard对象的成员函数。在进行拷贝或者粘贴的动作之前,必须先通过wx.TheClipboard.Open获得剪贴板的控制权,如果这个函数返回成功,则表示已经获得了剪贴板的控制权,可以调用wx.TheClipboard.SetData来将数据拷贝到剪贴板上,或者调用wx.TheClipboard.GetData函数从剪贴板上获取数据。最后,需要调用wx.TheClipboard.Close函数来释放剪贴板的控制权。一旦不使用剪贴板了,应该尽快释放掉剪贴板的控制权。
wx.TheClipboard常用方法:
AddData(self, data):调用此函数将数据对象添加到剪贴板。Clear(self):如果可能,清除全局剪贴板对象和系统的剪贴板。Close(self):调用此函数关闭剪贴板,使用Open打开它。Flush(self):刷新剪贴板:这意味着即使应用程序退出(可能会消耗内存),当前剪贴板上的数据仍将保持可用,否则退出时剪贴板将被清空。static Get():返回剪贴板对象的全局实例(wx.TheClipboard)。GetData(self, data):调用此函数用剪贴板上的数据填充数据(如果所需格式可用)。成功时返回True。IsOpened(self):如果剪贴板已打开,则返回True。Open(self):调用此函数在调用SetData和GetData之前打开剪贴板。SetData(self, data):调用此函数将数据对象设置为剪贴板。新的数据对象将替换之前设置的任何数据对象,因此如果应用程序希望以几种不同的格式提供剪贴板数据,则必须使用支持所有格式的复合数据对象,而不是使用不同的数据对象多次调用此函数,因为这将只会在剪贴板中留下最后一个数据对象的数据。调用此函数后,剪贴板拥有数据,因此不要显式删除数据。
二、剪贴板使用演示
#如何使用剪贴板import wxclass SampleClipboard(wx.Frame): def __init__(self, *args, **kw): super(SampleClipboard, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("实战wxPython: 如何使用剪贴板") self.SetSize(400, 300) panel = wx.Panel(self) lbl = wx.StaticText(panel, label="输入复制到剪贴板的文本:") self.text = wx.TextCtrl(panel, style = wx.TE_MULTILINE) btnCopy = wx.Button(panel, label="复制") btnCopy.Bind(wx.EVT_BUTTON, self.OnCopy) btnCopyFlush = wx.Button(panel, label="复制并刷新") btnCopyFlush.Bind(wx.EVT_BUTTON, self.OnCopyAndFlush) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(lbl, 0, wx.ALL, 5) sizer.Add(self.text, 1, wx.EXPAND) sizer.Add(btnCopy, 0, wx.ALL|wx.CENTER, 5) sizer.Add(btnCopyFlush, 0, wx.ALL|wx.CENTER, 5) panel.SetSizer(sizer) self.Centre() def OnCopy(self, e): self.dataObj = wx.TextDataObject() self.dataObj.SetText(self.text.GetValue()) if wx.TheClipboard.Open(): wx.TheClipboard.SetData(self.dataObj) wx.TheClipboard.Close() else: wx.MessageBox("不能打开剪贴板", "错误") def OnCopyAndFlush(self, e): self.dataObj = wx.TextDataObject() self.dataObj.SetText(self.text.GetValue()) if wx.TheClipboard.Open(): wx.TheClipboard.SetData(self.dataObj) wx.TheClipboard.Flush() else: self.dataObj.SetText(self.text.GetValue()) self.Close()def main(): app = wx.App() sample = SampleClipboard(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()
运行上面的代码,可以看到,在窗口的下方包含两个按钮,下面包含两个按钮,其中一个按钮复制添加到文本控件中的任何文本,然后您可以将其粘贴到其他地方,例如文本框、搜索引擎或其他地方。另一个按钮也复制到剪贴板,然后在刷新数据后关闭应用程序。可以看到即使在应用程序关闭后,数据在系统剪贴板中仍然可用。
这段代码的核心在按钮事件处理程序中。重点是wx.TextDataObject,它将存储来自文本控件的数据。接下来,尝试打开剪贴板。如果成功,我们将文本添加到剪贴板,然后关闭它。现在数据就可以粘贴了。如果我们向剪贴板复制一个位图,使用wx.BitmapDataObject位图数据对象即可。
三、本文知识点
了解wxPython中的数据对象。使用wx.TheClipboard实现剪贴板功能。
前一篇:wxPython - 在程序中使用拖放
欢迎关注,评论,收藏,点赞,和转发。
标签: #pythonclipboard