前提・実現したいこと
Python初心者です。
現在Python3(PyCharm)で簡単な在庫システムを作っています。
誰が備品を使ったか管理するために,一人一人の名前の情報が入ったQRコードをPythonで
作りましたが,このQRコードをPC上でなくバーコードリーダーを用いて読み取りたいです。
発生している問題・エラーメッセージ
下記のコードでは名前入力の際,リストボックスを使っていますが,ここをバーコードリーダーで
QRコードでの読み取りに変更したいのです。
しかし調べてもPC上での読み取りしか見つからないので困っています。。。
↓該当部分です。
class StartPage(tk.Frame): def __init__(self, master): tk.Frame.__init__(self, width=640, height=480) tk.Frame(width=640, height=480) self.variable = StringVar() tk.Label(self, text="NAME", font=('Helvetica', 18, "bold")).pack(side="top", fill="x", pady=5) self.allnames = ["なまえ1", "なまえ2", "なまえ3", "なまえ4", "なまえ5","なまえ6"] names = StringVar(value=self.allnames) self.listbox = Listbox(self, listvariable=names, height=5, selectmode=EXTENDED) self.listbox.pack() ### 該当のソースコード
↓全文になります。
from tkinter import* import tkinter.ttk as ttk try: import tkinter as tk except: import tkinter as tk import datetime class SampleApp(tk.Tk): def __init__(self): tk.Tk.__init__(self) self._frame = None self.switch_frame(StartPage) self.variable = StringVar() self.width = 640 self.height = 480 self.geometry(str(self.width) + "x" + str(self.height)) # ウィンドウの作成 def switch_frame(self, frame_class): new_frame = frame_class(self) if self._frame is not None: self._frame.destroy() self._frame = new_frame self._frame.pack() class StartPage(tk.Frame): def __init__(self, master): tk.Frame.__init__(self, width=640, height=480) tk.Frame(width=640, height=480) self.variable = StringVar() tk.Label(self, text="NAME", font=('Helvetica', 18, "bold")).pack(side="top", fill="x", pady=5) self.allnames = ["なまえ1", "なまえ2", "なまえ3", "なまえ4", "なまえ5","なまえ6"] names = StringVar(value=self.allnames) self.listbox = Listbox(self, listvariable=names, height=5, selectmode=EXTENDED) self.listbox.pack() tk.Label(self, text="Start page", font=('Helvetica', 18, "bold")).pack(side="top", fill="x", pady=5) ttk.Button(self, text="Go to page one", command=self.printValue).pack() def printValue(self): if len(self.listbox.curselection()) == 0: return index = self.listbox.curselection()[0] date = datetime.datetime.now() print(date.year, "年", date.month, "月", date.day, "日", date.hour, "時", date.minute, "分", date.second, "秒") self.entryvalue = StringVar() print(self.listbox.get(index), "さんこんにちは!") self.master.switch_frame(PageOne) class PageOne(tk.Frame): def __init__(self, master): tk.Frame.__init__(self, master) f1 = open('マジック赤.txt') f2 = open('マジック青.txt') data1 = f1.read() data2 = f2.read() f1.close() f2.close() self.entry1 = tk.Entry(width=15) self.entry1.place(x=180, y=60) self.entry1.insert(tk.END, data1) self.entry2 = tk.Entry(width=15) self.entry2.place(x=350, y=60) self.entry3 = tk.Entry(width=15) self.entry3.place(x=1000, y=1000) # 隠し中 self.entry4 = tk.Entry(width=15) self.entry4.place(x=180, y=90) self.entry4.insert(tk.END, data2) self.entry5 = tk.Entry(width=15) self.entry5.place(x=350, y=90) self.entry6 = tk.Entry(width=15) self.entry6.place(x=1000, y=1000) # 隠し中 self.label2 = tk.Label(text="備品個数", fg="black", font=("BIZ UDPゴシック", 15)) self.label2.place(x=180, y=25) self.label3 = tk.Label(text="必要個数", fg="black", font=("BIZ UDPゴシック", 15)) self.label3.place(x=350, y=25) self.label4 = tk.Label(text="備品名", fg="black", font=("BIZ UDPゴシック", 15)) self.label4.place(x=10, y=25) self.label4 = tk.Label(text="マジック", fg="black", font=("BIZ UDPゴシック", 13)) self.label4.place(x=10, y=60) self.label4 = tk.Label(text="赤", fg="red", font=("BIZ UDPゴシック", 13)) self.label4.place(x=73, y=60) self.label4 = tk.Label(text="マジック", fg="black", font=("BIZ UDPゴシック", 13)) self.label4.place(x=10, y=90) self.label4 = tk.Label(text="青", fg="blue", font=("BIZ UDPゴシック", 13)) self.label4.place(x=73, y=90) self.button2 = tk.Button(text="出庫する", command=self.button2Click, width=20, font=("BIZ UDPゴシック", 10)) self.button2.place(x=250, y=360) self.button3 = tk.Button(text="Go back to start page", command=self.button3Click, width=20, font=("BIZ UDPゴシック", 10)) self.button3.place(x=250, y=400) def button2Click(self): # ボタン1が押された時に呼ばれるメソッド if self.entry1.get() != "" and self.entry2.get() != "": self.entry3.delete(0, tk.END) self.entry3.insert(0, int(self.entry1.get()) - int(self.entry2.get())) # 計算結果をentry3に表示 if self.entry4.get() != "" and self.entry5.get() != "": self.entry6.delete(0, tk.END) self.entry6.insert(0, int(self.entry4.get()) - int(self.entry5.get())) # 計算結果をentry6に表示 v = int(self.entry1.get()) - int(self.entry2.get()) w = int(self.entry4.get()) - int(self.entry5.get()) print("残り在庫") print("マジック赤", v, "個") print("マジック青", w, "個") if self.entry3.get() != "" and self.entry6.get() != "": self.entry1.delete(0, tk.END) # 一旦全入力を消す self.entry2.delete(0, tk.END) self.entry3.delete(0, tk.END) self.entry4.delete(0, tk.END) self.entry5.delete(0, tk.END) self.entry6.delete(0, tk.END) self.entry1.insert(tk.END, v) self.entry4.insert(tk.END, w) f1 = open('マジック赤.txt', 'w') f2 = open('マジック青.txt', 'w') print(v, file=f1) print(w, file=f2) f1.close() f2.close() def button3Click(self): self.master.switch_frame(StartPage) if __name__ == "__main__": app = SampleApp() app.mainloop() ### 該当のソースコード
試したこと
実際にバーコードリーダーで読み取る用のライブラリを探しましたがPC上での読み取り方法しか見つけられませんでした。
Pythonをはじめて日は浅く,知識不足ゆえ何卒ご教示お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/19 00:26
2020/10/19 03:35 編集
2020/10/19 03:22
2020/10/19 07:18