Amazing-Python-Scripts
125 строк · 3.7 Кб
1from tkinter import *
2from tkinter import messagebox
3import os
4import pyqrcode
5import smtplib
6import imghdr
7from email.message import EmailMessage
8
9
10my_mail = "ENTER YOUR EMAIL ID"
11password = "SET PASSWORD"
12# create a GUI window with Tkinter
13window = Tk()
14window.title("QR Code Generator APP")
15global email_add
16
17
18# a function to generate all widgets
19def generate():
20if len(Subject.get()) != 0:
21global qr, photo
22qr = pyqrcode.create(Subject.get())
23photo = BitmapImage(data=qr.xbm(scale=8))
24else:
25messagebox.showerror("Error", "Enter subject first")
26try:
27showcode()
28except:
29pass
30
31
32# a function to show the qr code on the screen
33def showcode():
34imageLabel.config(image=photo)
35subLabel.config(text="QR of " + Subject.get())
36
37
38# A function to save the qr code as a png file
39def save():
40dir = os.getcwd()
41if not os.path.exists(os.getcwd()):
42os.makedirs(dir)
43try:
44if len(name.get()) != 0:
45qr.png(os.path.join(dir, name.get() + ".png"), scale=8)
46messagebox.showinfo("Status", "QR code saved successfully")
47else:
48messagebox.showerror("Error", "Enter file name first")
49except:
50messagebox.showerror("Error", "Generate the QR code first")
51
52
53def send():
54try:
55if len(mail.get()) != 0 and os.path.exists(name.get()+".png"):
56newMessage = EmailMessage()
57newMessage['Subject'] = "QR CODE IS READY!!"
58newMessage['From'] = my_mail
59newMessage['To'] = mail.get()
60with open(f'{name.get()}.png', 'rb') as f:
61image_data = f.read()
62image_type = imghdr.what(f.name)
63image_name = f.name
64newMessage.add_attachment(
65image_data, maintype='image', subtype=image_type, filename=image_name)
66with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
67smtp.login(my_mail, password)
68smtp.send_message(newMessage)
69
70messagebox.showinfo("Status", "Mail has been sent successfully")
71else:
72messagebox.showerror(
73"Error", "Invalid Email or QR Code not generated")
74except:
75messagebox.showerror("Error", "Invalid Email")
76
77
78# specifying all details for the widgets
79Sub = Label(window, text="Enter URL/Subject")
80Sub.grid(row=0, column=0, sticky=N + S + W + E)
81
82FName = Label(window, text="Enter filename to save as")
83FName.grid(row=1, column=0, sticky=N + S + W + E)
84
85Mail = Label(window, text="Enter email address")
86Mail.grid(row=2, column=0, sticky=N + S + W + E)
87
88Subject = StringVar()
89SubEntry = Entry(window, textvariable=Subject)
90SubEntry.grid(row=0, column=1, sticky=N + S + W + E)
91
92name = StringVar()
93nameEntry = Entry(window, textvariable=name)
94nameEntry.grid(row=1, column=1, sticky=N + S + W + E)
95
96mail = StringVar()
97mailEntry = Entry(window, textvariable=mail)
98mailEntry.grid(row=2, column=1, sticky=N + S + W + E)
99
100button = Button(window, text="Generate QR Code", width=15, command=generate)
101button.grid(row=0, column=3, sticky=N + S + W + E)
102
103imageLabel = Label(window)
104imageLabel.grid(row=4, column=1, sticky=N + S + W + E)
105
106subLabel = Label(window, text="")
107subLabel.grid(row=3, column=1, sticky=N + S + W + E)
108
109saveB = Button(window, text="Save as PNG File", width=15, command=save)
110saveB.grid(row=1, column=3, sticky=N + S + W + E)
111
112sendB = Button(window, text="Send QR code", width=15, command=send)
113sendB.grid(row=2, column=3, sticky=N + S + W + E)
114
115Rows = 5
116Columns = 5
117
118for row in range(Rows + 1):
119window.grid_rowconfigure(row, weight=1)
120
121for col in range(Columns + 1):
122window.grid_columnconfigure(col, weight=1)
123
124# let the program run forever until manually closed by the user
125window.mainloop()
126