GUI Python dalam 5 menit

gambar

Python mudah digunakan. Di dalamnya Anda dapat menemukan sejumlah besar perpustakaan untuk apa pun. Dan inilah keunggulan utamanya. Anda tidak akan melakukan apa pun dari beberapa baris kode. Jika Anda memerlukan skrip untuk penggunaan pribadi atau untuk audiens yang mengerti secara teknis, maka Anda bahkan tidak perlu memikirkan antarmuka grafis.

Namun, terkadang audiens target Anda tidak terlalu paham teknis. Orang tidak keberatan menggunakan skrip Python Anda sampai mereka perlu melihat satu baris kode. Dalam hal ini, skrip baris perintah tidak akan cukup. Idealnya, Anda memerlukan antarmuka grafis. Tujuan dari posting ini adalah hanya menggunakan Python.

Pustaka Python Yang Dapat Anda Gunakan Untuk GUI


Pada dasarnya, ada 3 pustaka Python yang bagus untuk GUI; Tkinter, wxPython dan PyQT. Melihat mereka, saya tidak menemukan ada yang saya sukai tentang Python. Pustaka python cenderung abstrak dengan sangat baik dari masalah super-teknis. Jika saya perlu bekerja dengan pemrograman berorientasi objek, saya bisa mengunduh Java atau .Net.

Perangkat Lunak EDISON - pengembangan web
Artikel ini diterjemahkan dengan dukungan Perangkat Lunak EDISON, yang menjaga kesehatan programmer dan sarapan mereka , dan juga mengembangkan perangkat lunak khusus .


Namun, untungnya, saya menemukan opsi keempat, yang saya suka. Ini PySimpleGUI, saya masih menggunakannya. Anehnya, perpustakaan ini menggunakan semua 3 perpustakaan populer, yang telah dibahas di atas, tetapi pada saat yang sama abstrak dari poin super teknis

Mari selami perpustakaan ini dan pelajari sambil memecahkan masalah nyata.

Periksa dua file yang identik


Saya mengatakan bagaimana melakukan ini di artikel saya β€œ3 cara cepat untuk membandingkan data dengan Python”. Kita dapat menggunakan bagian pertama, pemeriksaan integritas data, untuk mencoba membuat antarmuka pengguna.


Faktanya, kita perlu mengunduh dua file dan memilih enkripsi yang ingin kita gunakan untuk membandingkan file.

Program GUI


Untuk membuat antarmuka grafis, Anda dapat menggunakan kode ini:

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 

sebagai hasilnya, kita mendapatkan:

gambar

Kami menghubungkan logika


Ketika ada antarmuka pengguna, mudah untuk memahami bagaimana menghubungkan sisa kode. Kami hanya perlu melacak apa yang dimasukkan pengguna dan bertindak sesuai. Kami dapat dengan mudah melakukan ini dengan kode berikut:

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

Dia akan memberi kita hasil ini:

gambar

Pikiran terakhir


Ini mungkin bukan antarmuka pengguna yang paling indah, tetapi PySimpleGUI memungkinkan Anda untuk dengan cepat menggunakan antarmuka pengguna Python sederhana dan membaginya dengan siapa pun. Kode yang Anda butuhkan untuk ini sederhana dan mudah dibaca. Anda masih akan mengalami masalah dalam menjalankan kode untuk mendapatkan antarmuka pengguna. Karena itu, sulit untuk membagikan kode. Saya menyarankan Anda untuk mengunduh sesuatu seperti PyInstaller, yang akan mengubah skrip python Anda menjadi file .exe. Orang-orang akan dapat meluncurkannya hanya dengan mengkliknya dua kali.


Baca juga blognya
Perusahaan EDISON:


20 perpustakaan untuk
aplikasi iOS yang spektakuler

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


All Articles