wxPythonでドラッグ&ドロップ+クリップボード



livedoorリーダーなどに巡回先を登録中
あわせて、blog更新を少し楽に~~~ってことで、wxPythonを使ってblog更新用のミニツールを書いてみました
(余計に時間食ってるって気も)

以下コード


参考ページ

つかいかた

  • Webページ中のリンク部分を単独でドラッグ&ドロップするとリンクとして記憶
  • 選択した文章をD&Dすると、文章のみを記憶(リンクやスタイルは反映されず)
  • ボタンを押すと、記憶した内容をまとめてクリップボードにコピー
  • Python&wxPythonが必要
  • Idleから起動すると固まります。
  • 拡張子をpywで保存すると、黒い窓無しで起動できます
  • wxPythonだから、Windows以外でも動く、はず。。。
# -*- coding: utf-8 -*-
import wx

class MyTextDropTarget(wx.TextDropTarget):
    def __init__(self, WinObj):
        wx.TextDropTarget.__init__(self)
        self.WinObj = WinObj
    def OnDropText(self, x, y, text):
        self.WinObj.AppendText("¥n")
        if text.lower().startswith("http") :
            t=text.splitlines()
            t.append("¥n")
            self.WinObj.AppendText('<a href="%s">%s</a>¥n%s¥n'%(t[0],t[1],"¥n".join(t[2:])))
            #うちはPukiWiki書式つかってるのでこっちを使用
            #self.WinObj.AppendText("*[[%s:%s]]¥n%s¥n" %(t[1],t[0],"¥n".join(t[2:])))
        else :
            self.WinObj.AppendText(text)

class MyApp(wx.PySimpleApp):
    def OnInit(self):
        Frm = wx.Frame(None, -1, "wxPython", size=(450, 150),pos=(850,700))
        #うちの環境にあわせて座標を決め打ちしてあります。適当に直してください
        #デスクトップサイズの取得などは勉強中。。。
        self.Btn = wx.Button(Frm, -1, u"クリップボードにコピー")
        self.Btn.Bind(wx.EVT_BUTTON, self.OnButton)
        self.TxtCtrTo = wx.TextCtrl(Frm, -1, u"", pos=(10,30),¥
                size=(430,70),¥
                style=wx.TE_MULTILINE|wx.HSCROLL|wx.TE_PROCESS_ENTER)
        Frm.SetDropTarget(MyTextDropTarget(self.TxtCtrTo))
        #Frm.SetTransparent(200)
        Frm.Show()
        return 1

    def OnButton(self,event):
        t=self.TxtCtrTo.GetValue()
        wx.TheClipboard.SetData(wx.TextDataObject(t))
	#クリップボードへ
        #生の文字列ではなく、wx.TextDataObjectへ変換する必要がある

app = MyApp()
app.MainLoop()
Tags:

Related posts

タグ:

コメントは受け付けていません。