Membuat aplikasi berbasis GUI

By | January 15, 2021
Print Friendly, PDF & Email
2,818 Views

Sinopsis

Terasa bosan juga membuat aplikasi di Python berbasis CLI (command line interface), apalagi untuk orang yang terbiasa dengan aplikasi berbasis GUI (graphic user interface), maka di Python kalian bisa koq membuat aplikasi berbasis GUI menggunakan Tkinter sebagai code base nya yang telah di extend secara lebih baik. Kalian bisa install via PIP yaitu modul PySimpleGUI, berikut sketsa GUI nya yang dibuat sangat sederhana sesuai dengan judul diatas yaitu merge file pdf menjadi satu file. Pembuatan Sketsa bisa menggunakan Evolus Pencils yang ringan.

Aplikasi diatas membutuhkan juga modul PyPDF2 (https://pypi.org/project/PyPDF2/)  untuk operasi yang kalian perlukan seperti
  1. extracting document information (title, author, …)
  2. splitting documents page by page
  3. merging documents page by page
  4. cropping pages
  5. merging multiple pages into a single page
  6. encrypting and decrypting PDF files

Install Package/Modul

Seperti biasanya kalian harus pakai pip untuk lakukan instalasi package/modul di Python. Gunakan  perintah berikut
pip install pysimplegui
pip install PyPDF2

Pembuatan Kode untuk Merge File PDF

Cara kerjanya cukup mudah yaitu menggabungkan file pdf menjadi 1 file utuh, misalkan ada 5 file pdf akan dijadikan 1 file pdf. Untuk mempermudah hal tersebut biasanya 5 file pdf tersebut dikumpulkan dalam 1 folder tersendiri kemudian di looping isi folder sebagai urutan file yang kemudian di proses merge menjadi 1 kesatuan file utuh. Agar kalian tidak bingung, pelajari secara kode dibawah ini terlebih dahulu yang dapat kalian gunakan secara mudah.
import glob
from PyPDF2 import PdfFileMerger
 
def merger(output_path, input_paths):
    pdf_merger = PdfFileMerger() 
    for path in input_paths:
        pdf_merger.append(path)
 
    with open(output_path, 'wb') as fileobj:
        pdf_merger.write(fileobj)
 
if __name__ == '__main__':
    paths = glob.glob('C:/Users/bejo pamungkas/Desktop/hasil/*.pdf') #lokasi folder nya
    paths.sort()
    print(paths)
    merger('pdf_merger2.pdf', paths) #nama file yang telah di merged

Pembuatan GUI menggunakan PySimpleGUI

Sangat simple sekali kode diatas tidak perlu ribet, tapi alangkah baiknya kalau kode diatas dikembangkan menjadi versi GUI. Sebelum mengenal PySimpleGUI membuat aplikasi GUI menggunakan Tkinter terkadang cukup ribet karena mengatur layoutnya secara manual, sangat berbeda dengan PySimpleGUI by code, lagian juga PySimpleGUI sesuai dengan tujuannya yang simple menjadikan kode yang kita buat menjadi sangat sedikit sekali, hanya tidak lebih dari 30 baris saja lho, maka dengan beberapa kelebihan tersebut patut kalian coba dan menjadikan PySimpleGUI menjadi base GUI di Python yang terbaik dan ringan untuk saat ini. Daripada menggunakan PyQT yang rentan dengan error karena kebutuhan third party nya. PySimpleGUI dikembangkan dari Tkinter sehingga nggak perlu repot dan takut tidak compliance dengan Tkinter. Berikut kalian pelajari Pemrograman Python-Aplikasi GUI Python Merge File PDF.
import PySimpleGUI as sg
import glob

from PyPDF2 import PdfFileMerger


def merger(output_path, input_paths):
    pdf_merger = PdfFileMerger() 
    for path in input_paths:
        pdf_merger.append(path)
 
    with open(output_path, 'wb') as fileobj:
        pdf_merger.write(fileobj)
        
layout = [[sg.Text('Sumber Folder PDF')],      
          [sg.Input(key='sumber_folder'),sg.FolderBrowse('Lokasi Folder')],          
          [sg.Text('Hasil File PDF')],
          [sg.Input(key='target_file'), sg.FileSaveAs('Simpan File PDF',file_types=(('ALL Files', '*.pdf'),))],
          
          [sg.OK('Merge PDF'), sg.Exit('Keluar')] ]      


window = sg.Window('Aplikasi Merge PDF- www.softscients.web.id',layout)

while True:
    event,values = window.Read()
    try :
        if event in (None,'Keluar'):
            break
        if event == 'Merge PDF':
            print('split pdf')
            text_input = values['sumber_folder']
            text_output = values['target_file']
            if text_input!='' and  text_output!='':
                paths = glob.glob(str(text_input)+'/*.pdf') #lokasi folder nya
                paths.sort()
                merger(str(text_output),paths)
                sg.Popup('Info', 'Simpan di : '+text_output)
            else:
                print('Batal')
    except :
        break
    
window.Close()

 

 

Leave a Reply