Aplikasi Downloader dengan Python PyQt4 versi 2

BelajarPython - assalamualaikum wr. Wb.

Hy sahabat belajar python.. Kembali lagi nih dengan saya.. Saya akan mencoba untuk meng upgrade aplikasi yang sudah saya bagikan sebelumnya nih.. ya walaupun gk akan bagus sih.. Jadi pada postingan kali ini saya akan menambah fitur dari aplikasi downloader yang sudah saya posting sebelum nya ya... Nah seperti apakah perubahan nya.. Yuk langsung saja kita simak sama - sama postingan kali ini...

Penjelasan umum program / aplikasi.

Seperti yang sudah saya katakan sebelumnya, aplikasi yang akan saya bagikan kali ini merupakan aplikasi penerus dari aplikasi downloader versi pertama. Jika kalian belum membacaranya, kalian bisa KLIK DISINI untuk sekedar melihat atau pun kalau ingin membacanya ya...

Dimana sudah kita ketahui bersama, pada versi yang pertama aplikasi downloader ini tidak memiliki user interface atau tampilan sama sekali.. Melaikan hanya sebuah kotak dialog yang akan tampil ketika proses download sudah selesai.. Nah pada versi ke dua kali ini, saya akan mencoba untuk memberikan tampilan atau user interface... Ya hanya menambahkan interface saja.. hehe

Oya, aplikasi ini memiliki beberapa versi dengan peningkatan fitur di tiap versi nya... Jika kalian ingin mengetahui perkembangan tiap versi nya, kalian bisa membaca daftar isi dan rangkuman tiap versinya pada LINK INI ya... Silahkan klik saja.. Hehe

Fitur dan spesifikasi lengkap aplikasi Downloader versi 2.0

Perlu kalian ketahui, jika aplikasi yang akan kita buat kali ini merupakan aplikasi yang dibuat menggunakan library atau modul PyQt4. Jika kalian belum menginstall modul ini, Kalian bisa menginstall PyQt4 Di LINK INI. Silahkan klik ya.. Nah langsung saja yuk kita simak spesifikasi lengkap nya di bawah ini..


Nama: mn-downloader 2.0
Versi: 2.0
Platform: Python 3.x
Modul: PyQt4. Klik disini untuk instalasi PyQt4.
Baris Code: kurang lebih 130 baris code program.
Terdiri dari: 2 class dan 13 metode.
Fitur: menambahkan tampilan/user interface aplikasi.
syarat menjalankan: install python 3.x dan PyQt4, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PyQt4, copy dan paste code program pada editor atau IDE, simpan dalam file python(ekstensi .py), lalu jalankan.


Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Code program yang digunakan untuk membuat aplikasi Downloader versi 2.0

Pada segmen ini merupakan segmen utama pada postingan kali ini.. Karena saya akan memberikan code program dari aplikasi yang akan saya bagikan kali ini.... dan biar tidak penasaran lagi mengenai code program nya, yuk mari langsung saya kasi code program nya...

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtNetwork import *
import sys, os
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

class Tampilan(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        QApplication.setStyle(QStyleFactory.create('plastique'))
        self.setWindowTitle("Mini Downloader -> mn-belajarpython.blogspot.co.id")
        self.kbps = 0

        self.layout()
        self.buatAtribut()
        self.buatTombol()

    def layout(self):
        widgetInti = QWidget(self)
        self.layoutUtama = QVBoxLayout(widgetInti)
        self.layoutTombol = QHBoxLayout(self)
        self.layoutAtribut = QFormLayout(self)

        self.layoutUtama.addLayout(self.layoutAtribut)
        self.setCentralWidget(widgetInti)

    def buatAtribut(self):
        self.status = QLabel(text='Status           :')
        self.isiStatus = QLabel(text='Silahkan Masukkan link')
        self.layoutAtribut.addRow(self.status, self.isiStatus)

    def buatTombol(self):
        self.tombolNew = QPushButton(text='New')
        self.layoutTombol.addWidget(self.tombolNew)
        self.tombolNew.clicked.connect(self.linkDialog)

        self.tombolDownload = QPushButton(text = 'Download')
        self.layoutTombol.addWidget(self.tombolDownload)
        self.tombolDownload.setEnabled(False)
        self.tombolDownload.clicked.connect(self.perintahDownload)

        self.layoutUtama.addLayout(self.layoutTombol)

    def linkDialog(self):
        link, ok = QInputDialog.getText(self, 'Link Dialog', 'Masukan Link anda :')

        if ok:
            self.download = Downloader(link, parent=self)

            nama = os.path.basename(link)
            namaFile = ''

            for i in nama :
                if i != '.' :
                    namaFile += i
                else :
                    if len(namaFile)>0 :
                        break

            tesUrl = self.download.tesUrl()
            if tesUrl != True:
                self.isiStatus.setText(tesUrl)
            else:
                self.tombolDownload.setEnabled(True)
                self.isiStatus.setText('Siap di Download')

    def perintahDownload(self):
        self.download.mulai()
        self.isiStatus.setText('Mendownload....')

    def selesai(self):
        self.isiStatus.setText('Selesai..')
        self.tombolDownload.setEnabled(False)

class Downloader(QNetworkAccessManager):
    def __init__(self, url, parent=None):
        QNetworkAccessManager.__init__(self)

        self.parent=parent
        self.messageBuffer = QByteArray()
        self.teksUrl = url
        self.url = QUrl(url)

    def tesUrl(self):
        req = Request(self.teksUrl)

        try:
            response = urlopen(req)
        except HTTPError as e:
            print('The server couldn\'t fulfill the request.')
            print('Error code: ', e.code)
            return 'The server couldn\'t fulfill the raequest.'
        except URLError as e:
            print('We failed to reach a server.')
            print('Reason: ', e.reason)
            return 'We failed to reach a server.'
        else:
            print('Semuanya Normal')
            return True

    def mulai(self):
        req = QNetworkRequest(self.url)
        self.reply = self.get(req)

        QObject.connect(self.reply, SIGNAL("readyRead()"), self, SLOT("slotReadData()"))
        QObject.connect(self.reply, SIGNAL("finished()"), self, SLOT("slotFinished()"))

    @pyqtSlot()
    def slotFinished(self):
        imageFile = QFile('nama.jpg')
        if (imageFile.open(QIODevice.WriteOnly)):
            imageFile.write(self.messageBuffer)
            imageFile.close()
            QMessageBox.information(None, "Berhasil", "File telah Tersimpan!")
        self.parent.selesai()

    @pyqtSlot()
    def slotReadData(self):
        self.messageBuffer += self.reply.readAll()

###################################

if __name__ == '__main__':
    app = QApplication(sys.argv)
    aplikasi = Tampilan()
    aplikasi.show()
    sys.exit(app.exec_())



Nah lalu seperti apakah tampilan aplikasi tersebut setelah kita jalankan? Biar tidak lama lama penasaran, Yuk langsung saja kita lihat sama - sama tampilannya di bawah ini.. Let’s check it out temen - temen.. Heehe




Nah saat aplikasi pertama di jalankan, maka akan tampil seperti no. 1.. Ya hanya seperti itu saja.. Nah jika kalian klik new, maka akan tampil kotak dialog sepert no. 2. Dimana di sana kita diminta untuk memasukkan link file yang ingin kita unduh / download..

Dan perlu kalian ketahui ya.. Link File yang akan kalian unduh, formatnya haruslah sesuai.. Misalkan ‘jpg/gif/png’ untuk gambar.. Dan ‘mp3’ untuk musik.. ‘mp4/3gp’ untuk video.. Kalau format atau ekstensi nya ‘html’ berati adalah sebuah halaman html... Jadi pastikan akhiran link file yang kalian unduh tepat dan sesuai dengan apa yang ingin kalian unduh...

Contoh nya adalah pada link yang sudah saya kasi pada aplikasi Downloader versi yang pertama ya... Yaitu -> url = 'http://www.drodd.com/images14/g32.png'. Bisa kalian peratikan akhiran dari link tersebut. Yaitu ‘png’ yang menandakan file yang akan saya unduh adalah file foto atau gambar. Jika format nya berakhiran ‘html’ maka dipastikan file yang akan kalian dapatkan adalah sebuah halaman html.

Setelah itu, ubah nama file beserta ekstensi nya sesuai file yang sedang kalian unduh pada isi variabel “imageFile = QFile('nama.jpg')” yan ada pada metode ‘slotFinished’. Silahkan ubah kata ‘nama’ menjadi nama yang dikehendaki dan ubah ‘.jpg’ sesuai format file yang sedang kalian download. Contoh ‘.jpg’ untuk gambar dan ‘mp3’ untuk musik. Sesuaikan saja dengan ekstensi atau akhiran pada link kalian ya.


Sekali lagi saya ingatkan ya... Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Penjelasan code program untuk membuat aplikasi Downloader versi 2.0

Nah setelah kita tau aplikasi dan code program nya, maka selanjut saya akan menjelaskan code program yang sudah saya bagikan tadi ya temen - temen... Hal ini saya lakukan dengan tujuan agar kalian dapat memahami code program yang sudah saya rangkai tersebut... Ya anggaplah ini merupakan sebuah dokumentasi nya.. Hehe.. Yuk langsung saja kita mulai penjelasannya...

[NOTE : Teks yang berwarna merah pada penjelasan merupakan "Code program" yang di tambahkan pada versi kali ini. Dan tidak ada di versi sebelumnya]

from PyQt4.QtGui import *  //digunakan untuk mengimport semua subs class yang ada di class ‘QtGui’. Yang merupakan bagian dari modul ‘PyQt4’.
from PyQt4.QtCore import *  //digunakan untuk mengimport semua subs class yang ada di class ‘QtCore’. Yang merupakan bagian dari modul ‘PyQt4’.
from PyQt4.QtNetwork import *  //digunakan untuk mengimport semua subs class yang ada di class ‘QtNetwork’. Yang merupakan bagian dari modul ‘PyQt4’.
import sys  //digunakan untuk mengimport sys.
from urllib.request import Request, urlopen  //digunakan untuk mengimport ‘Request’ dan ‘urlopen’ yang merupakan  subs class dari class ‘request’. Yang merupakan bagian dari modul bawaan python yaitu ‘urllib’.
from urllib.error import URLError, HTTPError  //digunakan untuk mengimport ‘URLError’ dan ‘HTTPError’ yang merupakan  subs class dari class ‘error’. Yang merupakan bagian dari modul bawaan python yaitu ‘urllib’.

class Tampilan(QMainWindow):  //digunakan untuk membuat class dengan nama ‘Tampilan’ yang akan digunakan untuk membuat tampilan dari aplikasinya.
    def __init__(self):  //meruakan sebuah konstruktor dari class ‘Tampilan’.
        QMainWindow.__init__(self)  //digunakan untuk memanggil class ‘QMainWindow’.

        QApplication.setStyle(QStyleFactory.create('plastique'))  //digunakan untuk membuat style atau gaya tampilannya seperti plastik.
        self.setWindowTitle("Mini Downloader -> mn-belajarpython.blogspot.co.id")  //digunakan untuk mengubah judul window aplikasi.
        self.kbps = 0  //digunakan untuk mendefinisikan variabel ‘kbps’. Saya lupa ini fungsinya untuk apa.. Hehe.. Tapi kayak nya gak berguna sih

        self.layout()   //digunakan untuk menjalankan metode dengan nama ‘layout’.
        self.buatAtribut()   //digunakan untuk menjalankan metode dengan nama ‘buatAtribut’.
        self.buatTombol()   //digunakan untuk menjalankan metode dengan nama ‘buatTombol’.

    def layout(self):  ..digunakan untuk membuat metode dengan nama ‘layout’ yang digunakan untuk menyusun tampilan.
        widgetInti = QWidget(self)  //digunkan untuk mendefinisikan widget utama. Dan disimpan ke dalam variabel ‘widgetInti’.
        self.layoutUtama = QVBoxLayout(widgetInti)  //digunakan untuk membuat layout utama. Yang menggunakan ‘QVBoxLayout’ dengan memasukkan ‘widgetInti’ sebagai parameter. Dan disimpan ke dalam variabel ‘layoutUtama’.
        self.layoutTombol = QHBoxLayout(self)  //digunakan untuk membuat layout tombol. Yang menggunakan ‘QHBoxLayout’. Dan disimpan ke dalam variabel ‘layoutTombol’.
        self.layoutAtribut = QFormLayout(self)  //digunakan untuk membuat layout atribut. Yang menggunakan ‘QFormLayout’. Dan disimpan ke dalam variabel ‘layoutTombol’.

        self.layoutUtama.addLayout(self.layoutAtribut)  //digunakan untuk memasukkan Layout atribut kedalam layout utama.
        self.setCentralWidget(widgetInti)  //digunakan untuk memasukkan widgetInti kedalam window utama. Dimana diatur sebagai widget inti dari window.

    def buatAtribut(self):  //digunakan untuk membuat metode dengan nama ‘butAtribut’ yang akan digunakan untuk membuat teks status dan atribut lainnya.
        self.status = QLabel(text='Status           :')   //digunakan untuk membuat teks atau label yang kemudian dimasukkan ke dalam variabel ‘status;.
        self.isiStatus = QLabel(text='Silahkan Masukkan link')  //digunakan untuk membuat teks atau label yang kemudian dimasukkan ke dalam variabel ‘isiStatus’.
        self.layoutAtribut.addRow(self.status, self.isiStatus)  //digunakan untuk memasukkan label ataut teks yang ada pada variabel ‘status’ dan ‘isiStatus’ ke dalam layout atribut.

    def buatTombol(self):  //digunakan untuk membuat metode dengan nama ‘buatTombol’ yang digunakan untuk membuat tombol tombol yang diperlukan.
        self.tombolNew = QPushButton(text='New')  //digunakan untuk membuat tombol dengan nama ‘New’ dan disimpan ke dalam variabel ‘tombolNew’.
        self.layoutTombol.addWidget(self.tombolNew)  //digunakan untuk memasukkan tombol ‘New’ yang ada pada variabel ‘tombolNew’ ke dalam layout tombol.
        self.tombolNew.clicked.connect(self.linkDialog)  //digunakan untuk menjalankan metode dengan nama ‘linkDialog’ ketika tombol ‘New’ di klik.

        self.tombolDownload = QPushButton(text = 'Download')  //digunakan untuk membuat tombol dengan nama ‘Download’ dan disimpan ke dalam variabel ‘tombolDownload’.
        self.layoutTombol.addWidget(self.tombolDownload)  //digunakan untuk memasukkan tombol ‘Download’ yang ada pada variabel ‘tombolDownload’ ke dalam layout tombol.
        self.tombolDownload.setEnabled(False)  //digunakan untuk mematikan tombol ‘Download’.
        self.tombolDownload.clicked.connect(self.perintahDownload)  //digunakan untuk menjalankan metode dengan nama ‘perintahDownload’ ketika tombol ‘Download’ di klik.

        self.layoutUtama.addLayout(self.layoutTombol)  //dginakan untuk memasukkan layout tombol kedalam layout utama.

    def linkDialog(self):  //digunakan untuk membuat metode dengan nama ‘linkDialog’. Yang akan digunakan untuk menampilkan dialog untuk memasukkan link.
        link, ok = QInputDialog.getText(self, 'Link Dialog', 'Masukan Link anda :')  //digunakan untuk menampilkan input dialog. Dan menyimpan inputan user (link) kedalam variabel ‘link’. Dan menyimpan kondisi ‘True’ jika di klik oke dan ‘False’ jika cancel pada variabel ‘ok’.

        if ok:  //mengecek atau memastikan user menekan atau meng klik tombol ‘ok’ pada input dialog.
            self.download = Downloader(link, parent=self)  //digunakan untuk memanggil class ‘Downloader’ dengan memasukkan ‘link’ atau inputan user sebagai parameter dan juga class ini sebagai parent nya. Dan disimpan ke dalam variabel ‘download’.

            nama = os.path.basename(link)  //dugnakan untuk mendapatkan nama file yang akan di download. Dan disimpan ke dalam variabel ‘nama’.
            namaFile = ''  //digunakan untuk mendefinisikan variabel dengan nama ‘namaFile’ dengan nilai kosong.

            for i in nama :
                if i != '.' :
                    namaFile += i
                else :
                    if len(namaFile)>0 :
                        break
  //cod diatas digunakan untuk mendapatkan nama yang sebenarnya dari file. Atau nama tanpa ekstensi.

            tesUrl = self.download.tesUrl()  //digunakan untuk mengecek Url yang sudah dimasukkan user. Dan hasilnya dimasukkan ke dalam variabel ‘tesUrl’.
            if tesUrl != True:  //digunakan untuk mengecek apakah url nya salah.
                self.isiStatus.setText(tesUrl)  //digunakan untuk mengubah isi teks atau label status yang ada di variabel ‘isiStatus’ menjadi pesan error dari link.
            else:  //kode yang akan dijalankan ketika link sudah benar.
                self.tombolDownload.setEnabled(True)  //digunakan untuk menghidupkan tombol download.
                self.isiStatus.setText('Siap di Download')  //digunakan untuk mengubah isi teks atau label status yang ada di variabel ‘isiStatus’ menjadi teks ‘Siap di Download’.

    def perintahDownload(self):  //digunakan untuk membuat metode dengan nama ‘perintahDownload’ yang akn digunakan untuk mendownload file.
        self.download.mulai()  //digunakan untuk memulai proses download. Dan merupakan metode yang ada di class ‘Download’.
        self.isiStatus.setText('Mendownload....')  //digunakan untuk mengubah isi teks atau label status yang ada di variabel ‘isiStatus’ menjadi teks ‘Mendownload...’.

    def selesai(self):
        self.isiStatus.setText('Selesai..')  //digunakan untuk mengubah isi teks atau label status yang ada di variabel ‘isiStatus’ menjadi teks ‘Selesai...’.
        self.tombolDownload.setEnabled(False)  //digunakan untuk mematikan tombol downloadnya

class Downloader(QNetworkAccessManager):  //digunakan untuk membuat class dengan nama “Downloader” yang saya buat untuk menurunkan atau meng inheriten dari class ‘QNetworkAccessManager’.  Yang artinya menurnkan fungsi yang ada di class tersebut ke dalam class yang sudah saya buat ini.
    def __init__(self, url, parent=None):  //digunakan untuk membuat konstruktor dari class ‘Downloader’. 
        QNetworkAccessManager.__init__(self)  //digunakan untuk memanggil class ‘QNetworkAccessManager’. 

        self.messageBuffer = QByteArray()  //digunakan untuk memanggil class ‘QByteArray’ yang kemudian di tampung ke dalam variabel ‘messegeBuffer’. Ini akan digunakan untuk menyimpan file hasil download kita nantinya.
        self.parent=parent  //digunakan untuk menampung nilai parameter parent.
        self.teksUrl = url  //digunakan untuk menampung atau mengoper nilai yang ada di variabel ‘url’ ke dalam variabel ‘teksUrl’.
        self.url = QUrl(url)  //digunakan untuk memanggil metode dengan nama ‘Qurl’ yang ada di class ‘QNetworkAccessManager’ dengan memasukkan url file yang sudah di tampung ke dalam variabel ‘url’ sebagai parameter.

    def tesUrl(self):  //digunakan untuk membuat metode dengan nama ‘tesUrl’. Yang akan digunakan untuk mengetes atau mengecek url yang kalian masukkan.
        req = Request(self.teksUrl)  //digunakanuntuk memanggil class ‘Request’ yang sudah kita import tadi. Dan memasukkan nilai variabel ‘teksUrl’ sebagai parameter.

        try:  //digunakan untuk mencoba beberapa code program
            response = urlopen(req)  //digunakan untuk memanggil class ‘urlopen’ yang sudah kita import tadi. Dan memasukkan nilai variabel ‘req’ sebagai parameter.
        except HTTPError as e:  //digunakan untuk mencoba menjalankan code program ketika ada HTTPError
            print('The server couldn\'t fulfill the request.')  //digunkan untuk mencetak beberapa teks
            print('Error code: ', e.code)  //digunakan untuk mencetak code error yang terjadi.
            return 'The server couldn\'t fulfill the raequest.'  //digunakan untuk mengambalikan sebuah teks atau pesan error.
        except URLError as e:  //digunakan untuk menjalankan code program ketika ada eror URL
            print('We failed to reach a server.')  //digunakan untuk mencetak pesan error.
            print('Reason: ', e.reason)  //digunakan untuk mencetak pesan eror yang terjadi.
            return 'We failed to reach a server.'  //digunakan untuk mengembalikan teks.
        else:  //digunakan untuk menjalankan code program ketika error nya tidak ada pada dua pengecualian ‘except’ diatas.
            print('Semuanya Normal')  //digunakan untuk mencetak pesan sukses.
            return True  //digunakan untuk mengembalikan boolean ‘true’.

    def mulai(self):  //digunakan untuk membuat metode dengan nama ‘mulai’. Yang digunakan untuk memulai proses unduh atau download.
        req = QNetworkRequest(self.url)  //digunakan untuk memanggl class ‘QNetworkRequest’ dan memasukkan nilai variabel ‘url’ sebagai parameter.
        self.reply = self.get(req)  //digunakanuntuk memanggil metode dengan nama ‘get’ yang merupakan metode yang ada di ‘QNetworkAccessManager’ dan disimpan ke dalam variabel ‘reply’.

        QObject.connect(self.reply, SIGNAL("readyRead()"), self, SLOT("slotReadData()"))  //digunakan untuk memanggil metode dengann nama ‘connect’ yang ada pada class ‘QObject’ yang sudah kita import tadi. Dan memasukkan beberapa parameter. Dengan sinyal atau signal ‘readyRead’ yang artinya siap untuk di download, maka akan menjalankan metode dengan nama ‘slotReadData’.
        QObject.connect(self.reply, SIGNAL("finished()"), self, SLOT("slotFinished()"))  //digunakan untuk memanggil metode dengann nama ‘connect’ yang ada pada class ‘QObject’ yang sudah kita import tadi. Dan memasukkan beberapa parameter. Dengan sinyal atau signal ‘finished’ yang artinya selesai di download, maka akan menjalankan metode dengan nama ‘slotFinished’.

    @pyqtSlot()  //digunakan untuk menandakan bahwa metode dibawah nya adalah sebuah ‘slot’
    def slotFinished(self):  //digunakan untuk membuat metode dengan nama ‘slotFinished’ yang akan di gunakan untuk menyimpan file apabila telah selesai di unduh.
        imageFile = QFile('nama.jpg')  //digunakan untuk membuat sebuah file dengan nama ‘nama.jpg’. Dan disimpan ke dalam variabel ‘imageFile’.
        if (imageFile.open(QIODevice.WriteOnly)):  //digunakan untuk mengecek apakah file bisa di edit.
            imageFile.write(self.messageBuffer)  //digunakan untuk memasukkan file hasil download kedalam file di dalam variabel ‘imageFile’.
            imageFile.close()  //digunakan untuk menutup file yang telah kita masukkan file hasil download tadi.
            QMessageBox.information(None, "Berhasil", "File telah Tersimpan!")   //digunakan untuk menampilkan kotak pesan. Yang memberitahukan kepada user jika file berhasil kita unduh.

    @pyqtSlot()  //digunakan untuk menandakan bahwa metode dibawah nya adalah sebuah ‘slot’
    def slotReadData(self):  //digunakan untuk membuat metode dengan nama ‘slotReadData’ yang akan di gunakan untuk menampung file yang di unduh.
        self.messageBuffer += self.reply.readAll()  //digunakan untuk menampung atau menerima file yang sedang di unduh.

###################################

if __name__ == '__main__':  //digunakan untuk menjalanakan code program di dalam nya pertama kali. Bisa kita katakan sebagai metode utama.
    app = QApplication(sys.argv)  //digunakan untuk memanggil ‘Qapplication’ untuk memanggil window.
    aplikasi = Tampilan()  //digunakn untuk memanggil atau menjalankan class ‘aplikasi’.
    aplikasi.show()  //digunakan untuk menampilkan aplikasi

    sys.exit(app.exec_())  //digunakan agar aplikasi tidak langsung close saat di jalankan.



Nah itu dia temen - temen penjelasan saya mengenai code program yang telah saya bagikan tadi ya.. Oya jangan lupa lanjut ke versi selanjut nya ya.. Biar belajarnya lebih baik dan maksimal.. Oya.. Untuk mengetahui perkembangan tiap versinya, kalian bisa KLIK DISINI untuk melihat daftar isi versi dari aplikasi yang satu ini....

Dan itu dia aplikasi downloader yang dapat saya bagikan kali ini temen - temen... Jangan lupa untuk membaca postingan saya yang lainnya ya.. Jangan lupa juga untuk berlangganan via email ya... Agar kalian tidak ketinggalan setiap update yang saya lakukan.. Kolom email nya ada di paling bawah blog ini yaa.. Silahkan di scroll ke paling bawah...

Terakhir klinya saya ingatkan ya... Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...



Oke sekian dulu ya temen - temen postingan kali ini.. Sampai jumpa di postingan saya yang lain nya.. Sampaikan keluh kesah dan kritik saran kalian di komentar ya... Atau di halaman hubungi kami yang ada di blog ini.. Mohon maaf apabila ada salah kata sekian dan terimakasih temen - temen...

Wassalamualaikum wr. Wb.
Previous
Next Post »
Thanks for your comment