首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 使用 wxPython 存取系統剪貼板完整教學

     編輯:更多程式設計知識

桌面應用常需讀寫剪貼板。wxPython 提供簡潔 API:wx.TextDataObject 處理文字,wx.TheClipboard 管理剪貼板開啟/關閉與資料傳輸。本文示範基本讀寫與完整 GUI 範例。

基本操作流程


import wx

# 寫入文字
text_obj = wx.TextDataObject()
text_obj.SetText('要寫入的值')
if wx.TheClipboard.Open():
    wx.TheClipboard.SetData(text_obj)
    wx.TheClipboard.Close()

# 讀取文字
text_obj = wx.TextDataObject()
if wx.TheClipboard.Open():
    if wx.TheClipboard.GetData(text_obj):
        text = text_obj.GetText()
    wx.TheClipboard.Close()

完整 GUI 範例


import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='剪貼板示範', size=(400, 300))
        panel = wx.Panel(self)
        self.text = wx.TextCtrl(panel, pos=(10, 10), size=(370, 220), style=wx.TE_MULTILINE)
        copy_btn = wx.Button(panel, label='Copy', pos=(10, 240))
        paste_btn = wx.Button(panel, label='Paste', pos=(100, 240))

        self.Bind(wx.EVT_BUTTON, self.OnCopy, copy_btn)
        self.Bind(wx.EVT_BUTTON, self.OnPaste, paste_btn)

    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()

關鍵點

  • 操作剪貼板前必須呼叫 Open(),完成後呼叫 Close() 釋放鎖定。
  • 使用 IsOpened() 檢查是否已開啟,避免重複開啟導致錯誤。
  • TextDataObject 僅支援純文字;圖片、檔案等需使用 wx.BitmapDataObject, wx.FileDataObject 等。
  • 跨平台相容:Windows、Linux (GTK)、macOS 均支援。

常見問題

  1. 剪貼板被其他程式佔用導致 Open() 失敗:建議重試機制或提示使用者。
  2. 大量文字可能超過平台限制:分批處理或改用檔案中轉。
  3. 編碼問題:wxPython 內部使用 Unicode,Python 3 字串直接相容。

wxPython 剪貼板 API 簡單易用,適合快速開發桌面文字處理工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved