Interface graphique Python en 5 minutes

image

Python est facile à utiliser. Vous y trouverez un grand nombre de bibliothèques pour tout. Et c'est son principal avantage. Vous ne ferez rien à partir de quelques lignes de code. Si vous avez besoin de scripts pour un usage personnel ou pour un public averti en technologie, vous n'avez même pas besoin de penser à une interface graphique.

Cependant, parfois, votre public cible n'est pas très avisé sur le plan technique. Les gens n'hésitent pas à utiliser vos scripts Python jusqu'à ce qu'ils aient besoin de regarder une ligne de code. Dans ce cas, les scripts de ligne de commande ne seront pas suffisants. Idéalement, vous avez besoin d'une interface graphique. Le but de cet article est d'utiliser uniquement Python.

Bibliothèques Python que vous pouvez utiliser pour une interface graphique


Essentiellement, il existe 3 grandes bibliothèques Python pour l'interface graphique; Tkinter, wxPython et PyQT. En les regardant, je n'y ai rien trouvé que j'aime sur Python. Les bibliothèques Python ont tendance à très bien s'abstenir des problèmes super-techniques. Si j'avais besoin de travailler avec une programmation orientée objet, je pourrais tout aussi bien télécharger Java ou .Net.

Logiciel EDISON - développement web
Cet article a été traduit avec le soutien du logiciel EDISON, qui s'occupe de la santé des programmeurs et de leur petit - déjeuner , et développe également des logiciels personnalisés .


Cependant, heureusement, je suis tombé sur la quatrième option, qui m'a plu. C'est PySimpleGUI, je l'utilise toujours. Curieusement, cette bibliothèque utilise les 3 bibliothèques populaires, qui ont été discutées ci-dessus, mais en même temps des résumés de points super techniques

Plongeons dans cette bibliothèque et étudions-la tout en résolvant un vrai problème.

Vérifier deux fichiers identiques


J'ai expliqué comment procéder dans mon article «3 façons rapides de comparer des données en Python». Nous pouvons utiliser la première section, la vérification de l'intégrité des données, pour essayer de créer une interface utilisateur.


En fait, nous devons télécharger deux fichiers et sélectionner le cryptage que nous aimerions utiliser pour comparer les fichiers.

Programmer l'interface graphique


Pour créer une interface graphique, vous pouvez utiliser ce code:

import PySimpleGUI as sg layout = [ [sg.Text('File 1'), sg.InputText(), sg.FileBrowse(), sg.Checkbox('MD5'), sg.Checkbox('SHA1') ], [sg.Text('File 2'), sg.InputText(), sg.FileBrowse(), sg.Checkbox('SHA256') ], [sg.Output(size=(88, 20))], [sg.Submit(), sg.Cancel()] ] window = sg.Window('File Compare', layout) while True: # The Event Loop event, values = window.read() # print(event, values) #debug if event in (None, 'Exit', 'Cancel'): break 

en conséquence, nous obtenons:

image

Nous connectons la logique


Lorsqu'il existe une interface utilisateur, il est facile de comprendre comment connecter le reste du code. Nous devons simplement garder une trace de ce que l'utilisateur entre et agir en conséquence. Nous pouvons très facilement le faire avec le code suivant:

 import PySimpleGUI as sg import re import hashlib def hash(fname, algo): if algo == 'MD5': hash = hashlib.md5() elif algo == 'SHA1': hash = hashlib.sha1() elif algo == 'SHA256': hash = hashlib.sha256() with open(fname) as handle: #opening the file one line at a time for memory considerations for line in handle: hash.update(line.encode(encoding = 'utf-8')) return(hash.hexdigest()) layout = [ [sg.Text('File 1'), sg.InputText(), sg.FileBrowse(), sg.Checkbox('MD5'), sg.Checkbox('SHA1') ], [sg.Text('File 2'), sg.InputText(), sg.FileBrowse(), sg.Checkbox('SHA256') ], [sg.Output(size=(88, 20))], [sg.Submit(), sg.Cancel()] ] window = sg.Window('File Compare', layout) while True: # The Event Loop event, values = window.read() # print(event, values) #debug if event in (None, 'Exit', 'Cancel'): break if event == 'Submit': file1 = file2 = isitago = None # print(values[0],values[3]) if values[0] and values[3]: file1 = re.findall('.+:\/.+\.+.', values[0]) file2 = re.findall('.+:\/.+\.+.', values[3]) isitago = 1 if not file1 and file1 is not None: print('Error: File 1 path not valid.') isitago = 0 elif not file2 and file2 is not None: print('Error: File 2 path not valid.') isitago = 0 elif values[1] is not True and values[2] is not True and values[4] is not True: print('Error: Choose at least one type of Encryption Algorithm') elif isitago == 1: print('Info: Filepaths correctly defined.') algos = [] #algos to compare if values[1] == True: algos.append('MD5') if values[2] == True: algos.append('SHA1') if values[4] == True: algos.append('SHA256') filepaths = [] #files filepaths.append(values[0]) filepaths.append(values[3]) print('Info: File Comparison using:', algos) for algo in algos: print(algo, ':') print(filepaths[0], ':', hash(filepaths[0], algo)) print(filepaths[1], ':', hash(filepaths[1], algo)) if hash(filepaths[0],algo) == hash(filepaths[1],algo): print('Files match for ', algo) else: print('Files do NOT match for ', algo) else: print('Please choose 2 files.') window.close() 

Il nous donnera ce résultat:

image

Réflexions finales


Ce n'est peut-être pas la plus belle interface utilisateur, mais PySimpleGUI vous permet de déployer rapidement des interfaces utilisateur Python simples et de les partager avec n'importe qui. Le code dont vous avez besoin est simple et facile à lire. Vous aurez toujours un problème lors de l'exécution du code pour obtenir l'interface utilisateur. Pour cette raison, il peut être difficile de partager du code. Je vous conseille de télécharger quelque chose comme PyInstaller, qui transformera votre script python en un fichier .exe. Les gens pourront le lancer simplement en cliquant deux fois dessus.


Lisez aussi le blog
Société EDISON:


20 bibliothèques pour
application iOS spectaculaire

Source: https://habr.com/ru/post/fr480884/


All Articles