見出し画像

Tkinter 私の実績 A4(完)

前回に続き、QRコードを生成・表示する関数を追加して完了です。
記事の最後にソースコードを添付します。

前回との相違点

1.pyqrcode をインポート

環境によっては以下のようにインポートが必要です。
(Raspberry Pi の LXTerminal から)
pip3 install pyqrcode
pip3 install pypng

2.表示文字列の変更と追加

3.QRコードを生成・表示する関数を追加

差分ソース

def __init__(self,master): に追加・修正した分

       self.msg2 = u'コードを生成・表示しました。\nフォルダー「OUTPUT」に\n .png ファイルを保存済です。\nご利用下さい。'
       self.msg1 = u'スケールを選択し、文字列を\n入力して、<Enter> または、\n生成ボタンを押下して下さい。\n QRコードを生成します。'
       #self .msg1 = u'スケールを選択し、文字列を\n入力して、<Enter> または、\n生成ボタンを押下して下さい。\n  まだ何も起こりません。'

self.msg1 の末尾を「まだ何も起こりません。」から「QRコードを生成します。」に変更

QRコード生成後の表示 self.msg2 を追加


def makeqr(self): に追加・修正した分

   def makeqr(self):       # self.button1 または makeqre から呼び出し
       self.msg.set(self.msg2)                 # 表示文字列を指定
       scl = int(self.variable.get())          # プルダウンメニューの値を取得
       strs = self.box1.get()                  # 入力文字列を取得
       fname = strs
       fname = fname.replace('https://','')    # ファイル名に適さない文字列を置き換え
       fname = fname.replace('http://','')
       fname = fname.replace(':','_')
       fname = fname.replace('/','_')
       fname = fname.replace('.','_')
       fname = fname.replace(',','_')
       fname = fname.replace(' ','_')
       if len(fname) > 20:                     # .png ファイル名(略称)を作成
           fname = fname[:20]
           
       pngn = './OUTPUT/' + fname + '.png'
       a = pyqrcode.create(content=strs, error='H')    # QRコードイメージを作成
       a.png(file=pngn,scale=scl)                      # .png ファイルを保存
       
       self.canvasq.delete("all")                      # self.canvasq の表示を全消去
       self.fig2 = tk.PhotoImage(file=pngn)            # canvasq に表示
       self.canvasq.create_image(90, 90, image=self.fig2, anchor=tk.CENTER)

コメントに書いた通りですが、QRコード生成後のメッセージを指定(表示)した後で次の処理をします。
1.入力文字列、スケールの選択値を取得
2.QRコード・イメージファイルのファイル名に適さない文字を置換
3.2.の文字列の先頭20文字までを取得
4.1.からQRコードを生成し、3.のファイル名で保存
5.イメージ表示エリア(self.canvasq)の表示をクリア
6.イメージ表示エリアに4.のイメージを表示

以上で完了です。

Windows での表示

下図は、同じソースをWindowsで実行した結果です。

画像1

動作は問題なさそうですが、文字やウィジェットの配置が微妙にズレています。
他のOS等で使う場合は、微調整が必要そうです。



ソースコード

以下はWindows 環境で作ったZipファイルで、内容は以下の通りです。

SP003_main.py  プログラム
Tk_mag.png   起動時に表示するQRコード・イメージ
uPyC.png    uPyC ロゴ
./OUTPUT/keep_folder.txt  OUTPUTフォルダー

おまけ

Pyinstaller で EXE化したWindows版です。
Windows 用にウィジェットのサイズなどを調整し、Windows 10 で動作確認しました。

解凍して出来たフォルダーの SP003_main4win.exe をダブルクリックして起動します。


お役に立てたなら、コメント、サポート、スキを頂けると励みなります。

宜しくお願いします。

出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。