Python-GUI in 5 Minuten

Bild

Python ist einfach zu bedienen. Darin finden Sie eine Vielzahl von Bibliotheken für alles. Und das ist sein Hauptvorteil. Sie können mit ein paar Codezeilen nichts anfangen. Wenn Sie Skripte für den persönlichen Gebrauch oder für ein technisch versiertes Publikum benötigen, müssen Sie nicht einmal über eine grafische Oberfläche nachdenken.

Manchmal ist Ihre Zielgruppe jedoch nicht sehr technisch versiert. Die Leute haben nichts dagegen, Ihre Python-Skripte zu verwenden, bis sie sich eine Codezeile ansehen müssen. In diesem Fall reichen Befehlszeilenskripte nicht aus. Idealerweise benötigen Sie eine grafische Oberfläche. In diesem Beitrag wird nur Python verwendet.

Python-Bibliotheken, die Sie für eine GUI verwenden können


Grundsätzlich gibt es 3 großartige Python-Bibliotheken für die GUI. Tkinter, wxPython und PyQT. Als ich sie ansah, fand ich dort nichts, was ich an Python mag. Python-Bibliotheken abstrahieren in der Regel sehr gut von supertechnischen Problemen. Wenn ich mit objektorientierter Programmierung arbeiten müsste, könnte ich genauso gut Java oder .Net herunterladen.

EDISON Software - Webentwicklung
Dieser Artikel wurde mit der Unterstützung von EDISON Software übersetzt, die sich um die Gesundheit der Programmierer und deren Frühstück kümmert und auch kundenspezifische Software entwickelt .


Zum Glück stieß ich jedoch auf die vierte Option, die mir gefiel. Dies ist PySimpleGUI, ich benutze es immer noch. Seltsamerweise verwendet diese Bibliothek alle drei oben diskutierten populären Bibliotheken, abstrahiert aber gleichzeitig von supertechnischen Punkten

Lassen Sie uns in diese Bibliothek eintauchen und sie studieren, während wir ein echtes Problem lösen.

Überprüfen Sie zwei identische Dateien


Wie das geht, habe ich in meinem Artikel "3 schnelle Möglichkeiten zum Vergleichen von Daten in Python" beschrieben. Wir können den ersten Abschnitt, die Überprüfung der Datenintegrität, verwenden, um zu versuchen, eine Benutzeroberfläche zu erstellen.


Tatsächlich müssen wir zwei Dateien herunterladen und die Verschlüsselung auswählen, die wir zum Vergleichen der Dateien verwenden möchten.

Programmieren Sie die GUI


Um eine grafische Oberfläche zu erstellen, können Sie diesen Code verwenden:

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 

Als Ergebnis erhalten wir:

Bild

Wir verbinden Logik


Wenn es eine Benutzeroberfläche gibt, ist es leicht zu verstehen, wie der Rest des Codes verbunden wird. Wir müssen nur verfolgen, was der Benutzer eingibt und entsprechend handeln. Wir können dies sehr einfach mit dem folgenden Code tun:

 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() 

Er wird uns dieses Ergebnis geben:

Bild

Letzte Gedanken


Dies ist möglicherweise nicht die schönste Benutzeroberfläche, aber mit PySimpleGUI können Sie einfache Python-Benutzeroberflächen schnell bereitstellen und für andere Benutzer freigeben. Der Code, den Sie dafür benötigen, ist einfach und leicht zu lesen. Sie werden weiterhin Probleme haben, den Code zum Abrufen der Benutzeroberfläche auszuführen. Aus diesem Grund kann es schwierig sein, Code freizugeben. Ich rate Ihnen, etwas wie PyInstaller herunterzuladen, das Ihr Python-Skript in eine EXE-Datei verwandelt. Die Leute können es einfach starten, indem sie zweimal darauf klicken.


Lesen Sie auch den Blog
EDISON Unternehmen:


20 Bibliotheken für
spektakuläre iOS-Anwendung

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


All Articles