前提・実現したいこと
pythonのモジュールtkinterでGUIアプリを作っています。
「読み取り開始ボタン」を押したらカメラとメッセージボックスが起動し、バーコードが読み取れた時、もしくはメッセージボックスのOKボタンを押した時にwhile文を抜け出してlabel1に結果を出力するコードを作ろうとしています。
どうやったら動作するかアドバイスをいただきたいです。
該当のソースコード
python
1import sys 2import tkinter as tk 3from tkinter import ttk 4from tkinter import messagebox 5import cv2 as cv 6import numpy as np 7from pyzbar.pyzbar import decode 8 9def btn1_click(): 10 cap = cv.VideoCapture(0) 11 box = [] 12 while True: 13 #カメラから1コマのデータを取得する 14 ret,frame = cap.read() 15 #バーコードからデータを読み取る 16 for barcode in decode(frame): 17 #print(barcode.data) 18 #QRコードデータはバイトオブジェクトなので、カメラ上に描くために、文字列に変換する 19 myData = barcode.data.decode('utf-8') 20 box.append(myData) 21 cancel = messagebox.showinfo("バーコード起動中", "読み取りをやめますか?") 22 if len(box) == 1: 23 label1["text"] = myData 24 break 25 elif cancel == "ok": 26 label1["text"] = "cancel" 27 break 28 29 30root = tk.Tk() 31 32root.title(u"バーコード") 33root.geometry('800x480') 34 35Button1 = tk.Button(text=u'読み取り開始',font=("",25),command=btn1_click) 36Button1.pack(anchor='center',expand=1) 37 38label1 = tk.Label(text=u'バーコード',font=("", 50)) 39label1.pack(anchor='center',expand=1) 40 41root.mainloop()
試したこと
ここに問題に対して試したことを記載してください。
threadingモジュールなども使ってみましたが、うまく使いこなせませんでした、、
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 14:14