開発環境
- 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 コメント:
コメントを投稿