Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 63c1870

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /