扫描条形码,然后打开网站或文件 - Tkinter

时间:2018-02-19 09:13:42

标签: python tkinter barcode barcode-scanner

我在扫描条形码后试图打开文件(或网站)。我的条形码显示在tkinter终端中,但我不知道如何创建一个操作来打开文件或网站。 这是我的代码:

import tkinter as tk 
from tkinter.messagebox import showinfo

class Window(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)

        self.geometry('100x20')

        self.code = ''

        self.label = tk.Label(self, text="?")
        self.label.pack()

        self.bind('<Key>', self.get_key)

    def get_key(self, event):

        if event.char in '0123456789':
            self.code += event.char
            #print('>', self.code)
            self.label['text'] = self.code

        elif event.keysym == 'Return':
            #print('result:', self.code)
            showinfo('Code', self.code)

---主要---

win = Window()
win.mainloop()

有人可以帮助我如何处理它。如何创建界面或按钮来打开文件/网站?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

开设网站:

import webbrowser # pre-installed with python
url = 'www.google.co.uk'
webbrowser.open(url)

打开文件(Windows):

import os # pre installed 
os.startfile('file directory') # e.g "G:/Documents/School/image.png"

有关webbrowser和os模块的更多详细信息和方法,请查看:

这是一个带有条形码并打开文件或网页的迷你用户界面:

import os
from tkinter import *
import webbrowser

class Application(Frame):
    def __init__ (self, master):
        Frame.__init__(self,master)
        self.grid()

        b = StringVar()
        b.set("Enter barcode")

        self.barcode = Entry(self, textvariable = b)
        self.barcode.grid(row=0, column=1, sticky='n')

        self.submit = Button(self, text = "Submit", command = self.get_barcode)
        self.submit.grid(row=1, column=1, sticky='s')

    def get_barcode(self):
        barcode = int(self.barcode.get())

        if barcode == 000:
            url = "www.google.co.uk"
            webbrowser.open(url)
        elif barcode == 111:
            os.startfile("C:\Program Files\Internet Explorer\iexplore.exe")
        else:
            print("invalid barcode or something")


root= Tk()
app = Application(root)
root.mainloop()

显然我没有添加任何验证,但你可以轻松地做到这一点,甚至可能为验证添加一些弹出对话框。