Skip to content

Commit 63c1870

Browse files
committed
How to create QR Code - Python Tkinter Desktop App
How to create QR Code - Python Tkinter Desktop App
1 parent 8de90cd commit 63c1870

File tree

8 files changed

+141
-0
lines changed

8 files changed

+141
-0
lines changed

.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/.name

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/python____project.iml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

main.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
from tkinter import *
2+
from tkinter import ttk
3+
from tkinter import filedialog
4+
from PIL import Image, ImageTk
5+
from pyzbar.pyzbar import decode
6+
import pyqrcode
7+
import os
8+
9+
root = Tk()
10+
root.title("QR code application")
11+
note = ttk.Notebook(root)
12+
note.pack()
13+
14+
frame1 = Frame(note, height=400, width=150, bg='white')
15+
frame1.pack(fill="both", expand=True)
16+
frame2 = Frame(note, height=400, width=150, bg='white')
17+
frame2.pack(fill="both", expand=True)
18+
s = ttk.Style()
19+
s.theme_create("style", parent="alt", settings={
20+
"TNotebook.Tab": {"configure": {"padding": [20, 10],
21+
"font": ('Times', '20', 'bold')}}})
22+
s.theme_use("style")
23+
24+
note.add(frame1, text="Generate QR Code")
25+
note.add(frame2, text="Read QR Code")
26+
canvas1 = Canvas(frame1, width="400", height="300", relief=RIDGE, bd=2)
27+
canvas1.pack(padx=10, pady=10)
28+
canvas2 = Canvas(frame2, width="400", height="400", relief=RIDGE, bd=2)
29+
canvas2.pack(padx=10, pady=10)
30+
31+
32+
def generate():
33+
if data_entry.get() != '' and save_entry.get() != '':
34+
qr = pyqrcode.create(data_entry.get())
35+
img = qr.png(save_entry.get() + ".png", scale=5)
36+
info = Label(frame1, text="Generated QR code:", font=('ariel 15 bold'))
37+
info.place(x=60, y=40)
38+
img = Image.open(save_entry.get() + ".png")
39+
img = ImageTk.PhotoImage(img)
40+
canvas1.create_image(200, 180, image=img)
41+
canvas1.image = img
42+
else:
43+
info = Label(frame1, text="Please enter the data for QR code", font=('ariel 15 bold'))
44+
info.place(x=80, y=140)
45+
46+
47+
def selected():
48+
img_path = filedialog.askopenfilename(initialdir=os.getcwd(),
49+
title="Select Image", filetype=(
50+
("PNG file", "*.png"), ("All files", "*.*")))
51+
img = Image.open(img_path)
52+
img = ImageTk.PhotoImage(img)
53+
canvas2.create_image(200, 190, image=img)
54+
canvas2.image = img
55+
d = decode(Image.open(img_path))
56+
data = d[0].data.decode()
57+
qrcode_data = Label(frame2, text=data, bg='gold', fg='black', font=('ariel 15 bold'), relief=GROOVE)
58+
qrcode_data.place(x=150, y=380)
59+
60+
61+
data_label = Label(frame1, text='Enter data:', font=('ariel 15 bold'), bg='white')
62+
data_label.place(x=61, y=330)
63+
64+
save_label = Label(frame1, text='Enter name \n to save with:', font=('ariel 15 bold'), bg='white')
65+
save_label.place(x=55, y=360)
66+
67+
data_entry = Entry(frame1, font=('ariel 15 bold'), relief=GROOVE, bd=3)
68+
data_entry.place(x=197, y=330)
69+
70+
save_entry = Entry(frame1, font=('ariel 15 bold'), relief=GROOVE, bd=3)
71+
save_entry.place(x=197, y=380)
72+
73+
btn1 = Button(frame1, text="Generate", bg='black', fg='gold', font=('ariel 15 bold'), relief=GROOVE, command=generate)
74+
btn1.place(x=85, y=425)
75+
76+
btn2 = Button(frame1, text="Exit", width=10, bg='black', fg='gold', font=('ariel 15 bold'), relief=GROOVE,
77+
command=root.destroy)
78+
btn2.place(x=255, y=425)
79+
80+
btn2 = Button(frame2, text="Select Image", bg='black', fg='gold', font=('ariel 15 bold'), relief=GROOVE,
81+
command=selected)
82+
btn2.pack(side=LEFT, padx=50, pady=5)
83+
84+
85+
btn3 = Button(frame2, text="Exit", width=12, bg='black', fg='gold', font=('ariel 15 bold'), relief=GROOVE,
86+
command=root.destroy)
87+
btn3.pack(side=LEFT, padx=10, pady=5)
88+
89+
root.mainloop()

0 commit comments

Comments
 (0)