2019年11月1日金曜日

開発環境

退屈なことは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 コメント:

コメントを投稿