PythonistaでUIとクリップボードでアカウント情報簡易入力

何のこっちゃ

タイトルだけでは意味不明です。今回作ったのは、「amazonとかでアカウント情報を入力する際にワンタッチで入力出来たら楽なんじゃね?」という発想に基づいて作られたアプリです。

ちゃんと説明すると、amazonとかsteamなどのキーでアカウント名とパスワードを管理します。それらをUIのボタンに紐づけることで、ワンタップでクリップボードにコピーする事が出来るということです。

作ってみました

まずはCUIから。

import shelve, clipboard

dict = {}

print('モードを選択')
modenum = input('1:リスト 2:参照 3:登録 4:削除 >>>')
modenum = int(modenum)

if modenum == 1:
#ファイル参照、リスト出力
d = shelve.open('passdb')
print(list(d.keys()))
d.close
if modenum == 2:
#ファイル参照、パスワードを出力orクリップボードにコピー
print('参照するキーを入力')
rkey = input('key>>>')
d = shelve.open('passdb')
#辞書型を文字列型に変換
text = str(d[rkey])
l = text.split("'")
print(l)
print('アカウントorパスワード')
mnum = input('1:アカウント 2:パスワード>>>')
if mnum == '1':#アカウントが欲しい
if 'acc' in l[1]:
clipboard.set(l[1][3:])#頭につけたaccを除く
else:
clipboard.set(l[3][3:])#l[1]がアカウントじゃない場合
elif mnum == '2':#パスワードが欲しい
if 'pas' in l[1]:
clipboard.set(l[1][3:])#頭につけたpasを除く
else:
clipboard.set(l[3][3:])#l[1]がパスワードじゃない場合
d.close()
if modenum == 3:
#登録
print('キー入力')
key = input('key>>>')
print('アカウント入力')
acc = input('account>>>')
print('新規パスワード入力')
pas = input('password>>>')
d = shelve.open('passdb')
d[key] = {'acc' + acc, 'pas' + pas}#辞書型だからパスか垢の印をつける
d.close
if modenum == 4:
#間違い要素の削除
print('削除するキーを入力')
dkey = input('key>>>')
d = shelve.open('passdb')
del d[dkey]
d.close()

ややこしいというよりも我ながらアホなコードだと思う部分の説明(言い訳)をしておきます。Pythonに置いて辞書型だと値を入れた順番に並んでくれません。つまり先にアカウントを設定してl[1]で参照しようとしても、パスワードを参照してしまうことがあります。そのため値を設定する際に頭に「acc」か「pas」を付けることで目印をつけています。

GUIにする

次はGUIで実装します。

import ui, console

import shelve, clipboard

dict = {}

def enterkey():#キー参照のダイアログボックス
global key
key = console.input_alert('キーを入力')

def accref(sender):#垢取得
d = shelve.open('passdb')
#辞書型を文字列型に変換
text = str(d[key])
l = text.split("'")
print(l)
if 'acc' in l[1]:
clipboard.set(l[1][3:])#頭につけたaccを除く
else:
clipboard.set(l[3][3:])
d.close()

def passref(sender):#パスワードが欲しい
d = shelve.open('passdb')
#辞書型を文字列型に変換
text = str(d[key])
l = text.split("'")
print(l)
if 'pas' in l[1]:
clipboard.set(l[1][3:])#頭につけたpasを除く
else:
clipboard.set(l[3][3:])
d.close()

enterkey()

v = ui.load_view()
v.present()

といってもさっきのコードから関数を引っこ抜いてボタンに紐づけるだけ。

このアプリを実際に使うことはないでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA