wxPython使用系统剪切板的方法

534次阅读  |  发布于5年以前

本文实例讲述了wxPython使用系统剪切板的方法。分享给大家供大家参考。具体如下:

程序运行效果如下图所示:

主要代码如下:


    import wx
    ########################################################################
    class ClipboardPanel(wx.Panel):
      """"""
      #----------------------------------------------------------------------
      def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)
        lbl = wx.StaticText(self, label="Enter text to copy to clipboard:")
        self.text = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        copyBtn = wx.Button(self, label="Copy")
        copyBtn.Bind(wx.EVT_BUTTON, self.onCopy)
        copyFlushBtn = wx.Button(self, label="Copy and Flush")
        copyFlushBtn.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(copyBtn, 0, wx.ALL|wx.CENTER, 5)
        sizer.Add(copyFlushBtn, 0, wx.ALL|wx.CENTER, 5)
        self.SetSizer(sizer)
      #----------------------------------------------------------------------
      def onCopy(self, event):
        """"""
        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("Unable to open the clipboard", "Error")
      #----------------------------------------------------------------------
      def onCopyAndFlush(self, event):
        """"""
        self.dataObj = wx.TextDataObject()
        self.dataObj.SetText(self.text.GetValue())
        if wx.TheClipboard.Open():
          wx.TheClipboard.SetData(self.dataObj)
          wx.TheClipboard.Flush()
        else:
          wx.MessageBox("Unable to open the clipboard", "Error")
        self.GetParent().Close()
    ########################################################################
    class ClipboardFrame(wx.Frame):
      """"""
      #----------------------------------------------------------------------
      def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Clipboard Tutorial")
        panel = ClipboardPanel(self)
        self.Show()
    if __name__ == "__main__":
      app = wx.App(False)
      frame = ClipboardFrame()
      app.MainLoop()

希望本文所述对大家的Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8