開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)に出てきたpyperclipパッケージを利用して以前作成したコマンドラインアプリケーションを、ボタンクリックのみで日本語(非ASCII文字)を含むアドレスをTwitter等への貼り付けできるURLへ変換するGUIアプリケーションにしてみた。
といのも、以前のままだとコマンドラインで実行した場合はいいとして、Dockから起動した場合はその都度Terminalが開いて増えていくから。小さいWindowを表示させておくだけでいいから、標準ライブラリーのTkinterを利用することに。
コード
Python 3
urlencoder.py
#!/usr/bin/env python3 import urllib.parse import pyperclip def encode(): url1 = pyperclip.paste() url2 = urllib.parse.quote(url1, safe='/:') pyperclip.copy(url2) return [url1, url2] if __name__ == '__main__': for url in encode(): print(url)
main.py
import urlencoder import tkinter as tk from typing import Tuple class App(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.create_widgets() def create_widgets(self): self.button = tk.Button(self, text='Encode', command=self.encode) self.button.pack() self.url1 = tk.Label(self) self.url1.pack() self.url2 = tk.Label(self) self.url2.pack() self.button_clear = tk.Button(self, text='Clear', command=self.clear) self.button_clear.pack() def encode(self): url1, url2 = urlencoder.encode() self.url1['text'] = url1 self.url2['text'] = url2 def clear(self): self.url1['text'] = '' self.url2['text'] = '' root = tk.Tk() app = App(master=root) app.master.title('URLEncoder') app.master.minsize(200, 100) app.mainloop()
入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))
% python3 main.py& [1] 86379 %と起動しておけば、ランレングス符号化(RLE(Run-Length Encoding))による圧縮結果を変換する場合、URLをコピーして、 のEncodeボタンをクリックすれば、変換されたのがクリップボードコピーされてそのまま貼り付け可能に。
一応、クリップボードにあるのが思ってたのと違わないかどうか確認できるように、それを表示するように。
0 コメント:
コメントを投稿