Amazing-Python-Scripts

Форк
0
125 строк · 3.7 Кб
1
from tkinter import *
2
from tkinter import messagebox
3
import os
4
import pyqrcode
5
import smtplib
6
import imghdr
7
from email.message import EmailMessage
8

9

10
my_mail = "ENTER YOUR EMAIL ID"
11
password = "SET PASSWORD"
12
# create a GUI window with Tkinter
13
window = Tk()
14
window.title("QR Code Generator APP")
15
global email_add
16

17

18
# a function to generate all widgets
19
def generate():
20
    if len(Subject.get()) != 0:
21
        global qr, photo
22
        qr = pyqrcode.create(Subject.get())
23
        photo = BitmapImage(data=qr.xbm(scale=8))
24
    else:
25
        messagebox.showerror("Error", "Enter subject first")
26
    try:
27
        showcode()
28
    except:
29
        pass
30

31

32
# a function to show the qr code on the screen
33
def showcode():
34
    imageLabel.config(image=photo)
35
    subLabel.config(text="QR of " + Subject.get())
36

37

38
# A function to save the qr code as a png file
39
def save():
40
    dir = os.getcwd()
41
    if not os.path.exists(os.getcwd()):
42
        os.makedirs(dir)
43
    try:
44
        if len(name.get()) != 0:
45
            qr.png(os.path.join(dir, name.get() + ".png"), scale=8)
46
            messagebox.showinfo("Status", "QR code saved successfully")
47
        else:
48
            messagebox.showerror("Error", "Enter file name first")
49
    except:
50
        messagebox.showerror("Error", "Generate the QR code first")
51

52

53
def send():
54
    try:
55
        if len(mail.get()) != 0 and os.path.exists(name.get()+".png"):
56
            newMessage = EmailMessage()
57
            newMessage['Subject'] = "QR CODE IS READY!!"
58
            newMessage['From'] = my_mail
59
            newMessage['To'] = mail.get()
60
            with open(f'{name.get()}.png', 'rb') as f:
61
                image_data = f.read()
62
                image_type = imghdr.what(f.name)
63
                image_name = f.name
64
            newMessage.add_attachment(
65
                image_data, maintype='image', subtype=image_type, filename=image_name)
66
            with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
67
                smtp.login(my_mail, password)
68
                smtp.send_message(newMessage)
69

70
            messagebox.showinfo("Status", "Mail has been sent successfully")
71
        else:
72
            messagebox.showerror(
73
                "Error", "Invalid Email or QR Code not generated")
74
    except:
75
        messagebox.showerror("Error", "Invalid Email")
76

77

78
# specifying all details for the widgets
79
Sub = Label(window, text="Enter URL/Subject")
80
Sub.grid(row=0, column=0, sticky=N + S + W + E)
81

82
FName = Label(window, text="Enter filename to save as")
83
FName.grid(row=1, column=0, sticky=N + S + W + E)
84

85
Mail = Label(window, text="Enter email address")
86
Mail.grid(row=2, column=0, sticky=N + S + W + E)
87

88
Subject = StringVar()
89
SubEntry = Entry(window, textvariable=Subject)
90
SubEntry.grid(row=0, column=1, sticky=N + S + W + E)
91

92
name = StringVar()
93
nameEntry = Entry(window, textvariable=name)
94
nameEntry.grid(row=1, column=1, sticky=N + S + W + E)
95

96
mail = StringVar()
97
mailEntry = Entry(window, textvariable=mail)
98
mailEntry.grid(row=2, column=1, sticky=N + S + W + E)
99

100
button = Button(window, text="Generate QR Code", width=15, command=generate)
101
button.grid(row=0, column=3, sticky=N + S + W + E)
102

103
imageLabel = Label(window)
104
imageLabel.grid(row=4, column=1, sticky=N + S + W + E)
105

106
subLabel = Label(window, text="")
107
subLabel.grid(row=3, column=1, sticky=N + S + W + E)
108

109
saveB = Button(window, text="Save as PNG File", width=15, command=save)
110
saveB.grid(row=1, column=3, sticky=N + S + W + E)
111

112
sendB = Button(window, text="Send QR code", width=15, command=send)
113
sendB.grid(row=2, column=3, sticky=N + S + W + E)
114

115
Rows = 5
116
Columns = 5
117

118
for row in range(Rows + 1):
119
    window.grid_rowconfigure(row, weight=1)
120

121
for col in range(Columns + 1):
122
    window.grid_columnconfigure(col, weight=1)
123

124
# let the program run forever until manually closed by the user
125
window.mainloop()
126

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.