Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
O
objQRcode
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thorfin89
objQRcode
Commits
9c67410b
Commit
9c67410b
authored
Dec 31, 2023
by
Thorfin89
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ouverture de fichier. Renommage des variables.
parent
4f6d0fd6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
96 additions
and
59 deletions
+96
-59
README.md
README.md
+7
-2
main.py
main.py
+87
-55
read_qrcode.py
read_qrcode.py
+2
-2
No files found.
README.md
View file @
9c67410b
# objQRCode
# objQRCode
objQRCode est un utilitaire pour créer des QRCode écrit en python.
**objQRCode**
est un utilitaire pour créer des QRCode écrit en python.
C'est en faite une interface graphique pour
**qrcode**
(https://pypi.org/project/qrcode/) sous python.
L'application est en cours de développement.
C'est en faite une interface graphique pour qrcode sous python.
## Paquets à installer :
## Paquets à installer :
-
qrcode
-
qrcode
...
@@ -40,3 +42,6 @@ https://goqr.me/#t=wifi
...
@@ -40,3 +42,6 @@ https://goqr.me/#t=wifi
### segno - python
### segno - python
-
https://segno.readthedocs.io/en/latest/index.html
-
https://segno.readthedocs.io/en/latest/index.html
-
https://www.freecodecamp.org/news/how-to-create-stunning-qr-codes-with-python
-
https://www.freecodecamp.org/news/how-to-create-stunning-qr-codes-with-python
### autres :
-
https://www.youtube.com/watch?v=FShKBCoGeQg&ab_channel=Apprenezlawebradio
\ No newline at end of file
main.py
View file @
9c67410b
...
@@ -5,20 +5,41 @@
...
@@ -5,20 +5,41 @@
from
tkinter
import
*
from
tkinter
import
*
from
tkinter
import
messagebox
from
tkinter
import
messagebox
from
tkinter.colorchooser
import
askcolor
from
tkinter.colorchooser
import
askcolor
from
tkinter
import
filedialog
from
tk_tools
import
SmartSpinBox
from
tk_tools
import
SmartSpinBox
import
qrcode
import
qrcode
from
qrcode.constants
import
ERROR_CORRECT_M
from
qrcode.constants
import
ERROR_CORRECT_M
import
cv2
from
PIL
import
Image
from
PIL
import
Image
fg_color
=
"#000000"
fg_color
=
"#000000"
bg_color
=
"#FFFFFF"
bg_color
=
"#FFFFFF"
VERSION
=
3
version
=
3
curent_file
=
""
# ===== FONCTIONS =====
# ===== FONCTIONS =====
# ouverture d'un fichier
def
open_file
():
global
curent_file
file
=
filedialog
.
askopenfilename
(
title
=
"Ouvrir un QRCode au format PNG"
,
defaultextension
=
"png"
,
initialdir
=
"./qrcodes"
)
curent_file
=
file
text
.
delete
(
0
,
'end'
)
text
.
insert
(
0
,
decode
(
file
))
code
()
display_qrcode
()
# lit l'image au format PNG et renvoie le texte
def
decode
(
file
):
decoder
=
cv2
.
QRCodeDetector
()
data_text
,
points
,
data_code
=
decoder
.
detectAndDecode
(
cv2
.
imread
(
file
))
return
data_text
# choix de la couleur du fond
# choix de la couleur du fond
def
set_bg_color
():
def
set_bg_color
():
global
bg_color
global
bg_color
...
@@ -26,8 +47,9 @@ def set_bg_color():
...
@@ -26,8 +47,9 @@ def set_bg_color():
if
selection
:
if
selection
:
bg_color
=
selection
bg_color
=
selection
bg_color_btn
.
config
(
bg
=
bg_color
)
bg_color_btn
.
config
(
bg
=
bg_color
)
if
texte_a_coder
.
get
()
!=
""
:
if
text
.
get
()
!=
""
:
create_qrcode
()
code
()
display_qrcode
()
# si la couleur du fond du code est identique à celle de la fenêtre
# si la couleur du fond du code est identique à celle de la fenêtre
if
bg_color
==
"#808080"
:
if
bg_color
==
"#808080"
:
...
@@ -43,66 +65,76 @@ def set_fg_color():
...
@@ -43,66 +65,76 @@ def set_fg_color():
if
selection
:
if
selection
:
fg_color
=
selection
fg_color
=
selection
fg_color_btn
.
config
(
bg
=
fg_color
)
fg_color_btn
.
config
(
bg
=
fg_color
)
if
texte_a_coder
.
get
():
if
text
.
get
():
create_qrcode
()
code
()
display_qrcode
()
def
no_password
(
value
):
def
no_password
(
value
):
if
value
==
"Aucun"
:
if
value
==
"Aucun"
:
titre_saisie_pass
.
config
(
state
=
DISABLED
)
password_title
.
config
(
state
=
DISABLED
)
saisie_pass
.
delete
(
0
,
'end'
)
password
.
delete
(
0
,
'end'
)
saisie_pass
.
config
(
state
=
DISABLED
)
password
.
config
(
state
=
DISABLED
)
else
:
else
:
titre_saisie_pass
.
config
(
state
=
NORMAL
)
password_title
.
config
(
state
=
NORMAL
)
saisie_pass
.
config
(
state
=
NORMAL
)
password
.
config
(
state
=
NORMAL
)
def
transfert
():
def
transfert
():
if
s
aisie_ssid
.
get
()
!=
""
:
if
s
sid_name
.
get
()
!=
""
:
ssid
=
s
aisie_ssid
.
get
()
ssid
=
s
sid_name
.
get
()
crypt
=
c
hoix_crypt
.
get
()
crypt
=
c
rypt_choice
.
get
()
p
assword
=
saisie_pass
.
get
()
p
wd
=
password
.
get
()
# SSID caché OUI/NON
# SSID caché OUI/NON
if
choix_cach
e
.
get
()
==
"OUI"
:
if
hide_choic
e
.
get
()
==
"OUI"
:
cache
=
"True"
cache
=
"True"
else
:
else
:
cache
=
""
cache
=
""
texte_a_coder
.
delete
(
0
,
'end'
)
# mise à jour du texte à coder
code_wifi
=
"WIFI:T:"
+
crypt
+
";S:"
+
ssid
+
";P:"
+
password
+
";H:"
+
cache
text
.
delete
(
0
,
'end'
)
texte_a_coder
.
insert
(
0
,
code_wifi
)
code_wifi
=
"WIFI:T:"
+
crypt
+
";S:"
+
ssid
+
";P:"
+
pwd
+
";H:"
+
cache
create_qrcode
()
text
.
insert
(
0
,
code_wifi
)
# création de l'image du qrcode et affichage
code
()
display_qrcode
()
else
:
else
:
messagebox
.
showerror
(
"Erreur"
,
"Saisissez un SSID"
)
messagebox
.
showerror
(
"Erreur"
,
"Saisissez un SSID"
)
def
verif_create_qrcode
():
def
verif_before_code
():
if
texte_a_coder
.
get
()
!=
""
:
if
text
.
get
()
!=
""
:
create_qrcode
()
code
()
display_qrcode
()
else
:
else
:
messagebox
.
showerror
(
"Erreur"
,
"Il n'y a pas de données à coder"
)
messagebox
.
showerror
(
"Erreur"
,
"Il n'y a pas de données à coder"
)
def
c
reate_qrc
ode
():
def
code
():
global
qrcode_img
global
qrcode_img
bs
=
boxe_size_scale
.
get
()
bs
=
boxe_size_scale
.
get
()
br
=
border_size_scale
.
get
()
br
=
border_size_scale
.
get
()
qr
=
qrcode
.
QRCode
(
qr
=
qrcode
.
QRCode
(
version
=
VERSION
,
version
=
version
,
error_correction
=
ERROR_CORRECT_M
,
error_correction
=
ERROR_CORRECT_M
,
box_size
=
bs
,
box_size
=
bs
,
border
=
br
border
=
br
)
)
qr
.
add_data
(
text
e_a_coder
.
get
())
qr
.
add_data
(
text
.
get
())
qr
.
make
(
fit
=
'True'
)
qr
.
make
(
fit
=
'True'
)
# création et sauvegarde de l'image du QRCode
# création et sauvegarde de l'image du QRCode
img
=
qr
.
make_image
(
fill_color
=
fg_color
,
back_color
=
bg_color
)
img
=
qr
.
make_image
(
fill_color
=
fg_color
,
back_color
=
bg_color
)
img
.
save
(
'qrcode.png'
)
img
.
save
(
'qrcode.png'
)
def
display_qrcode
():
global
qrcode_img
# calcul de la taille du QRCode pour le centrer dans la fenêtre
# calcul de la taille du QRCode pour le centrer dans la fenêtre
img
=
Image
.
open
(
"qrcode.png"
)
img
=
Image
.
open
(
"qrcode.png"
)
size
=
img
.
size
size
=
img
.
size
...
@@ -136,7 +168,7 @@ menu_fichier = Menu(menu_general, tearoff=0)
...
@@ -136,7 +168,7 @@ menu_fichier = Menu(menu_general, tearoff=0)
menu_general
.
add_cascade
(
label
=
"Fichier"
,
menu
=
menu_fichier
)
menu_general
.
add_cascade
(
label
=
"Fichier"
,
menu
=
menu_fichier
)
# Création des sous menus 'Fichiers'
# Création des sous menus 'Fichiers'
menu_fichier
.
add_command
(
label
=
"Nouveau"
)
menu_fichier
.
add_command
(
label
=
"Nouveau"
)
menu_fichier
.
add_command
(
label
=
"Ouvrir"
)
menu_fichier
.
add_command
(
label
=
"Ouvrir"
,
command
=
open_file
)
menu_fichier
.
add_command
(
label
=
"Enregistrer"
)
menu_fichier
.
add_command
(
label
=
"Enregistrer"
)
menu_fichier
.
add_command
(
label
=
"Enregistrer sous"
)
menu_fichier
.
add_command
(
label
=
"Enregistrer sous"
)
menu_fichier
.
add_command
(
label
=
"Quitter"
,
command
=
quit
)
menu_fichier
.
add_command
(
label
=
"Quitter"
,
command
=
quit
)
...
@@ -163,8 +195,8 @@ bottom_frame.place(x=0, y=421, width=800, height=220)
...
@@ -163,8 +195,8 @@ bottom_frame.place(x=0, y=421, width=800, height=220)
# ===== WIDGETS =====
# ===== WIDGETS =====
# Choix des couleurs
# Choix des couleurs
titre_choix_couleur
=
Label
(
left_frame
,
text
=
"Choix de couleurs :"
,
bg
=
"#CCCCCC"
)
color_choice
=
Label
(
left_frame
,
text
=
"Choix de couleurs :"
,
bg
=
"#CCCCCC"
)
titre_choix_couleur
.
place
(
x
=
20
,
y
=
18
)
color_choice
.
place
(
x
=
20
,
y
=
18
)
bg_color_btn
=
Button
(
left_frame
,
bg
=
bg_color
,
relief
=
SUNKEN
,
command
=
set_bg_color
)
bg_color_btn
=
Button
(
left_frame
,
bg
=
bg_color
,
relief
=
SUNKEN
,
command
=
set_bg_color
)
bg_color_btn
.
place
(
x
=
82
,
y
=
62
,
width
=
20
,
height
=
20
)
bg_color_btn
.
place
(
x
=
82
,
y
=
62
,
width
=
20
,
height
=
20
)
fg_color_btn
=
Button
(
left_frame
,
bg
=
fg_color
,
relief
=
SUNKEN
,
command
=
set_fg_color
)
fg_color_btn
=
Button
(
left_frame
,
bg
=
fg_color
,
relief
=
SUNKEN
,
command
=
set_fg_color
)
...
@@ -185,45 +217,45 @@ border_size_scale.set(2)
...
@@ -185,45 +217,45 @@ border_size_scale.set(2)
border_size_scale
.
place
(
x
=
180
,
y
=
90
)
border_size_scale
.
place
(
x
=
180
,
y
=
90
)
# ===== point d'accès WIFI =====
# ===== point d'accès WIFI =====
titre_wifi
=
Label
(
left_frame
,
text
=
'CONFIGURATION DU WIFI :'
,
bg
=
"#CCCCCC"
)
wifi_title
=
Label
(
left_frame
,
text
=
'CONFIGURATION DU WIFI :'
,
bg
=
"#CCCCCC"
)
titre_wifi
.
place
(
x
=
30
,
y
=
175
)
wifi_title
.
place
(
x
=
30
,
y
=
175
)
# SSID
# SSID
titre_saisie_ssid
=
Label
(
left_frame
,
text
=
'SSID :'
,
bg
=
"#CCCCCC"
)
ssid_name_title
=
Label
(
left_frame
,
text
=
'SSID :'
,
bg
=
"#CCCCCC"
)
titre_saisie_ssid
.
place
(
x
=
30
,
y
=
200
)
ssid_name_title
.
place
(
x
=
30
,
y
=
200
)
s
aisie_ssid
=
Entry
(
left_frame
,
width
=
40
)
s
sid_name
=
Entry
(
left_frame
,
width
=
40
)
s
aisie_ssid
.
place
(
x
=
30
,
y
=
225
)
s
sid_name
.
place
(
x
=
30
,
y
=
225
)
# Password
# Password
titre_saisie_pass
=
Label
(
left_frame
,
text
=
'Mot de passe :'
,
bg
=
"#CCCCCC"
)
password_title
=
Label
(
left_frame
,
text
=
'Mot de passe :'
,
bg
=
"#CCCCCC"
)
titre_saisie_pass
.
place
(
x
=
30
,
y
=
250
)
password_title
.
place
(
x
=
30
,
y
=
250
)
saisie_pass
=
Entry
(
left_frame
,
width
=
40
)
password
=
Entry
(
left_frame
,
width
=
40
)
saisie_pass
.
place
(
x
=
30
,
y
=
275
)
password
.
place
(
x
=
30
,
y
=
275
)
# Cryptage
# Cryptage
titre_choix_crypt
=
Label
(
left_frame
,
text
=
'Cryptage :'
,
bg
=
"#CCCCCC"
)
crypt_title
=
Label
(
left_frame
,
text
=
'Cryptage :'
,
bg
=
"#CCCCCC"
)
titre_choix_crypt
.
place
(
x
=
300
,
y
=
200
)
crypt_title
.
place
(
x
=
300
,
y
=
200
)
crypt_list
=
[
"WPA"
,
"WEP"
,
"Aucun"
]
crypt_list
=
[
"WPA"
,
"WEP"
,
"Aucun"
]
c
hoix_crypt
=
SmartSpinBox
(
root
,
entry_type
=
'str'
,
width
=
8
,
justify
=
CENTER
,
c
rypt_choice
=
SmartSpinBox
(
root
,
entry_type
=
'str'
,
width
=
8
,
justify
=
CENTER
,
values
=
crypt_list
,
callback
=
no_password
)
values
=
crypt_list
,
callback
=
no_password
)
c
hoix_crypt
.
place
(
x
=
300
,
y
=
225
)
c
rypt_choice
.
place
(
x
=
300
,
y
=
225
)
# Caché
# Caché
titre_cach
e
=
Label
(
left_frame
,
text
=
'Caché :'
,
bg
=
"#CCCCCC"
)
hide_titl
e
=
Label
(
left_frame
,
text
=
'Caché :'
,
bg
=
"#CCCCCC"
)
titre_cach
e
.
place
(
x
=
300
,
y
=
250
)
hide_titl
e
.
place
(
x
=
300
,
y
=
250
)
cach
e_list
=
[
"NON"
,
"OUI"
]
hid
e_list
=
[
"NON"
,
"OUI"
]
choix_cache
=
Spinbox
(
left_frame
,
values
=
cach
e_list
,
width
=
8
,
justify
=
CENTER
)
hide_choice
=
Spinbox
(
left_frame
,
values
=
hid
e_list
,
width
=
8
,
justify
=
CENTER
)
choix_cach
e
.
place
(
x
=
300
,
y
=
275
)
hide_choic
e
.
place
(
x
=
300
,
y
=
275
)
# Transfert du code dans les données à coder
# Transfert du code dans les données à coder
transfert_btn
=
Button
(
left_frame
,
text
=
"Transfert
\n
vers
\n
données"
,
transfert_btn
=
Button
(
left_frame
,
text
=
"Transfert
\n
vers
\n
données"
,
bg
=
"#61AEF9"
,
command
=
transfert
)
bg
=
"#61AEF9"
,
command
=
transfert
)
transfert_btn
.
place
(
x
=
30
,
y
=
320
,
width
=
60
,
height
=
60
)
transfert_btn
.
place
(
x
=
30
,
y
=
320
,
width
=
60
,
height
=
60
)
# bouton de création du QRCode
# bouton de création du QRCode
c
reate_btn
=
Button
(
left_frame
,
text
=
"Créer le Code"
,
bg
=
"#88FF88"
,
command
=
verif_create_qr
code
)
c
ode_btn
=
Button
(
left_frame
,
text
=
"Créer le Code"
,
bg
=
"#88FF88"
,
command
=
verif_before_
code
)
c
reat
e_btn
.
place
(
x
=
260
,
y
=
380
,
width
=
100
,
height
=
40
)
c
od
e_btn
.
place
(
x
=
260
,
y
=
380
,
width
=
100
,
height
=
40
)
# texte à coder
# texte à coder
t
itre_texte_a_coder
=
Label
(
bottom_frame
,
text
=
'Données à coder :'
,
bg
=
"#CCCCCC"
)
t
exte_title
=
Label
(
bottom_frame
,
text
=
'Données à coder :'
,
bg
=
"#CCCCCC"
)
t
itre_texte_a_coder
.
place
(
x
=
30
,
y
=
0
)
t
exte_title
.
place
(
x
=
30
,
y
=
0
)
text
e_a_coder
=
Entry
(
bottom_frame
,
width
=
122
)
text
=
Entry
(
bottom_frame
,
width
=
122
)
text
e_a_coder
.
place
(
x
=
30
,
y
=
25
)
text
.
place
(
x
=
30
,
y
=
25
)
# affichage du QRcode
# affichage du QRcode
qrcode_img
=
""
qrcode_img
=
""
...
...
read_qrcode.py
View file @
9c67410b
# installer le paquet : opencv-python
# installer le paquet : opencv-python
import
cv2
import
cv2
d
=
cv2
.
QRCodeDetector
()
d
ecodeur
=
cv2
.
QRCodeDetector
()
val
,
points
,
qrcode
=
d
.
detectAndDecode
(
cv2
.
imread
(
"codes/Kylix
.png"
))
val
,
points
,
code
=
decodeur
.
detectAndDecode
(
cv2
.
imread
(
"qrcodes/qrcode-0
.png"
))
print
(
"Le texte codé est :"
)
print
(
"Le texte codé est :"
)
print
(
val
)
print
(
val
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment