質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

解決済

[python3]バーコードリーダーを用いてQRコードの内容(名前)の入力を行いたい

MM921
MM921

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

1回答

1評価

1クリップ

4039閲覧

投稿2020/10/16 07:31

前提・実現したいこと

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をはじめて日は浅く,知識不足ゆえ何卒ご教示お願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール