前提
Python3.7でnfcpyを使ってnfcタグを読み取るCUIプログラムを書きました。これをGUIに対応させるべくTkinterを使うことにしました。
以下のような流れを実装するべく、nfc読み取り用のスレッドを生成して利用しようと考えているのですが、どう利用すべきか思いつきません。
###実装したい流れ
0. ソースコードを実行する
0. 「カードをタッチしてください」と書かれたウィンドウが表示されると同時にnfcリーダが読み取りを開始する
0. nfcリーダがカード情報を読み取ると、新規ダイアログが生成されて、読み取った情報が表示される。
###スレッドを使う理由
mainloop内でスレッドを用いない場合、nfcの読み取りが終わるまで前後の処理が画面上に反映されなかったため。
下記コードはその例です。この場合nfcをリーダにタッチするまで何も表示されません。タッチしてから「カードをタッチしてください」って言われるんですけど、それじゃ誰もタッチしませんよね…
Python
1import tkinter as tk 2import felicaidm as fe # nfcpyでnfcタグを読み取る 3 4class Application(tk.Frame): 5 def __init__(self, master=None): 6 super().__init__(master=master) 7 self.master = master 8 self.pack() 9 self.create_widgets() 10 11 def create_widgets(self): 12 self.textLabel = tk.Label(text="カードをタッチしてください") 13 self.textLabel.pack() 14 card = fe.inputCard() # nfc読み取り 15 16 17root = tk.Tk() 18app = Application(master=root) 19app.mainloop()
わからないこと
inputCard()のスレッドを実行したとして、nfcリーダにカードがタッチされたタイミングで新規ダイアログを作成する方法。
具体的には、カードがタッチされたことをきっかけにmainloop内に処理を発生させる方法。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。