BelajarPython - Assalamualaikum wr. wb.
Jumpa lagi temen.. Kali ini, saya akan mengajak kalian untuk membuat mini aplikasi lagi.. Aplikasi apa? Penasaran ? Langsung saja di simak ya..
Versi yang ke10 ini saya akan mencoba untuk meng update sedikit saja.. Yaitu mengubah judul tab sesuai judul halaman web yang kita kunjungi..
Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu.. 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...
Dan berikut contoh screenshoot dari mini aplikasi kali ini...
Agar berhasil, Pastikan PC kalian terhubung dengan internet ya temen - temen...
Nah itu dia temen - temen penjelasan code programnya.. Mohon maaf apabila ada penjelasan yang kurang jelas, atau bahkan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya... Biar kita bisa belajar bersama..
Oke terimakasih dan sampai di sini dulu ya... Jangan lupa untuk membaca versi yang lain... Biar ilmunya nambah.. Hehe.. Temikasih sekali lagi dan sekian...
Wassalamualaikum wr. wb.
Jumpa lagi temen.. Kali ini, saya akan mengajak kalian untuk membuat mini aplikasi lagi.. Aplikasi apa? Penasaran ? Langsung saja di simak ya..
Pengenalan aplikasi yang akan kita buat.
Aplikasi yang kita buat kali ini adalah Browser. Udah tau kan ? Ya seperti chrome atau mozila gitu.. Tapi dengan fitur yang seadanya saja ya... Oya, seperti biasa, Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi nya, KLIK DISINI ya...Versi yang ke10 ini saya akan mencoba untuk meng update sedikit saja.. Yaitu mengubah judul tab sesuai judul halaman web yang kita kunjungi..
Rincian Lengkap Aplikasi Browser PySide Versi 10.0
Aplikasi ini menggunakan library PySide.. Jadi, kalian perlu menginstall library tersebut untuk menjalankan aplikasi ini.. Klik disini jika belum install..Nama | : mn-Browser 10.0 |
Versi | : 10.0 || selanjutnya. |
Bahasa | : Python 3.x || Install. |
Modul | : PySide || Install. |
Baris Code | : +-356 baris. |
Penambahan | : +-30 baris. |
Terdiri dari | : 2 class dan 30 metode. |
Fitur | : Mengubah judul tab. |
Kelemahan | : Judul yang terlalu panjang akan di potong dan kadang tidak sesuai. |
syarat menjalankan | : Python 3.x, PySide, dan editor teks / IDE. |
Cara menjalankan | : install python 3 dan PySide, copy paste code program pada editor/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.. 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 aplikasi Browser PySide versi 10.0
Nah lalu seperti apa code program versi ini ? Oke, Berikut saya berikan code program nya ya...from PySide import QtCore, QtGui, QtWebKit import sys class TabDialog(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.penampungTab = [] self.tambah = False self.inisialisasiTab() self.tambahTab() self.tabKeWindow() def inisialisasiTab(self): self.elemenTab = QtGui.QTabWidget(self) # self.elemenTab.addTab(GeneralTab(), "General") self.elemenTab.setMovable(True) self.elemenTab.tabCloseRequested.connect(self.tutup) self.tabButton = QtGui.QToolButton(self) self.tabButton.setText('+') font = self.tabButton.font() font.setBold(True) self.tabButton.setFont(font) self.elemenTab.setCornerWidget(self.tabButton, QtCore.Qt.TopLeftCorner) self.tabButton.clicked.connect(self.tambahTab) def tambahTab(self): self.penampungTab.append(Browser(parent=self)) a = self.elemenTab.addTab(self.penampungTab[len(self.penampungTab) - 1], "No Internet Connection") self.elemenTab.setTabShape(QtGui.QTabWidget.Triangular) self.tambah = True if self.elemenTab.count() < 2: self.elemenTab.setTabsClosable(False) else: self.elemenTab.setTabsClosable(True) self.elemenTab.setCurrentIndex(self.elemenTab.count() - 1) def tabKeWindow(self): self.centralWidget = QtGui.QWidget(self) mainLayout = QtGui.QVBoxLayout(self.centralWidget) mainLayout.addWidget(self.elemenTab) mainLayout.setContentsMargins(0, 0, 0, 0) self.setCentralWidget(self.centralWidget) self.setWindowTitle("Mini WebBrowser -> mn-belajarpython.blogspot.co.id") def perintahTutup(self): if self.elemenTab.count() > 1: posisi = self.elemenTab.currentIndex() self.elemenTab.removeTab(posisi) if self.elemenTab.count() == 1: self.elemenTab.setTabsClosable(False) def tutup(self, i): self.elemenTab.removeTab(i) if self.elemenTab.count() < 2: self.elemenTab.setTabsClosable(False) def setJudul(self, teks, memori, tooltip): for i in range(self.elemenTab.count()): if self.elemenTab.widget(i).getPosisiMemory() == memori: self.elemenTab.setTabText(i, teks) self.elemenTab.setTabToolTip(i, tooltip) def closeEvent(self, event): self.destroy() class Browser(QtGui.QMainWindow): def __init__(self, parent=None, url=''): QtGui.QMainWindow.__init__(self) self.parent = parent self.resize(800, 600) self.centralwidget = QtGui.QWidget(self) self.default_url = "https://google.co.id" self.urlTab = url self.layout() self.buatToolbar() self.buatKolomCari() self.windowBrowser() self.browse() def layout(self): self.layoutUtama = QtGui.QHBoxLayout(self.centralwidget) self.layoutUtama.setContentsMargins(0, 0, 0, 0) self.frame = QtGui.QFrame(self.centralwidget) self.layoutBrowser = QtGui.QVBoxLayout(self.frame) self.layoutBrowser.setSpacing(0) def setValueProgressbar(self, pos): self.progressBar.setValue(pos) self.tombolReload.setIcon(self.style().standardIcon(QtGui.QStyle.SP_BrowserStop)) self.progressBar.setVisible(True) self.tombolMaju.setEnabled(self.webBrowser.history().canGoForward()) self.tombolKembali.setEnabled(self.webBrowser.history().canGoBack()) def buatToolbar(self): self.layoutToolbar = QtGui.QHBoxLayout() self.kolomUrl = QtGui.QLineEdit(self.frame) self.kolomUrl.returnPressed.connect(self.browse) self.tombolKembali = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_ArrowBack), 'kembali', self.frame) self.tombolKembali.triggered.connect(self.perintahKembali) self.tombolKembali.setEnabled(False) self.tombolMaju = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_ArrowForward), 'maju', self.frame) self.tombolMaju.triggered.connect(self.perintahMaju) self.tombolMaju.setEnabled(False) self.tombolReload = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_BrowserReload), 'muat ulang', self.frame) self.tombolReload.triggered.connect(self.perintahReload) bar = QtGui.QToolBar() bar.addAction(self.tombolKembali) bar.addAction(self.tombolMaju) bar.addAction(self.tombolReload) self.tombolGo = QtGui.QPushButton(text='Go') self.tombolGo.clicked.connect(self.browse) self.layoutToolbar.addWidget(bar) self.layoutToolbar.addWidget(self.kolomUrl) self.layoutToolbar.addWidget(self.tombolGo) self.layoutToolbar.setContentsMargins(0, 0, 0, 0) self.layoutBrowser.setContentsMargins(0, 0, 0, 0) self.layoutBrowser.addLayout(self.layoutToolbar) self.menuTabBaru = QtGui.QAction(self, text='Tab Baru') self.menuTabBaru.triggered.connect(self.parent.tambahTab) self.menuTutupTab = QtGui.QAction(self, text='Tutup Tab') self.menuTutupTab.triggered.connect(self.parent.perintahTutup) self.menuCetak = QtGui.QAction(self, text='Cetak') self.menuCetak.triggered.connect(self.perintahCetak) self.menuCari = QtGui.QAction(self, text='Cari') self.menuCari.triggered.connect(self.perintahBukaPencarian) self.menuWeb = QtGui.QAction(self, text='Web') self.menuWeb.triggered.connect(self.perintahWeb) self.menuAbout = QtGui.QAction(self, text='About') self.menuAbout.triggered.connect(self.tentang) self.menuAboutQt = QtGui.QAction(self, text='About Qt') self.menuAboutQt.triggered.connect(self.tentangQt) self.menuExit = QtGui.QAction(self, text='Exit') self.menuExit.triggered.connect(self.parent.close) self.menu = QtGui.QMenu(self) self.menu.addAction(self.menuTabBaru) self.menu.addAction(self.menuTutupTab) self.menu.addSeparator() self.menu.addAction(self.menuCetak) self.menu.addAction(self.menuCari) self.menu.addSeparator() self.menu.addAction(self.menuAbout) self.menu.addAction(self.menuAboutQt) self.menu.addAction(self.menuWeb) self.menu.addAction(self.menuExit) self.buttonShow = QtGui.QPushButton(self) self.buttonShow.setText("") self.buttonShow.setMenu(self.menu) self.buttonShow.setFlat(True) self.layoutToolbar.addWidget(self.buttonShow) self.layoutToolbar.addWidget(self.buttonShow) self.progressBar = QtGui.QProgressBar() self.layoutBrowser.addWidget(self.progressBar) self.progressBar.setVisible(False) def tentang(self): QtGui.QMessageBox.information(self, "Tentang aplikasi", self.tr("Aplikasi ini merupakan sebuah apliakasi sederhana. " "Namun, saya rasa aplikasi ini sudah cukup bagus. " "dari segi design. karena, didukung oleh modul yang " "cukup lengkap dari PySide. sehingga saya hanya " "menggunakannya saja\n" "\nnah gimana ? menarikkan ? yuk kunjungi : " "mn-belajarpython.blogspot.co.id untuk tutorial " "menarik lainnya...")) def tentangQt(self): QtGui.QMessageBox.aboutQt(self) def perintahCetak(self): infoPrinter = QtGui.QPrinterInfo() printer = QtGui.QPrinter(infoPrinter) self.webBrowser.print(printer) def windowBrowser(self): self.webBrowser = QtWebKit.QWebView() self.layoutBrowser.addWidget(self.webBrowser) self.layoutUtama.addWidget(self.frame) self.setCentralWidget(self.centralwidget) def buatKolomCari(self): layoutKolomCari = QtGui.QHBoxLayout(self) self.teks = QtGui.QLabel(self, text='Kata kunci : ') layoutKolomCari.addWidget(self.teks) self.tombolNext = QtGui.QPushButton(self, text='Next') self.tombolPrevious = QtGui.QPushButton(self, text='Previous') self.tombolTutup = QtGui.QPushButton(self, text='X') self.tombolTutup.clicked.connect(self.perintahTutupPencarian) self.tombolNext.clicked.connect(self.cariNext) self.tombolPrevious.clicked.connect(self.cariPrevious) self.tombolPrevious.setFlat(True) self.tombolNext.setFlat(True) self.tombolPrevious.setFixedSize(60, 20) self.tombolNext.setFixedSize(45, 20) self.tombolTutup.setFixedSize(20, 25) self.kolomCari = QtGui.QLineEdit(self) self.kolomCari.editingFinished.connect(self.cariNext) layoutKolomCari.addWidget(self.kolomCari) self.kolomCari.setFixedSize(200, 20) layoutKolomCari.addWidget(self.tombolNext) layoutKolomCari.addWidget(self.tombolPrevious) layoutKolomCari.addWidget(self.tombolTutup) layoutKolomCari.setAlignment(self.teks, QtCore.Qt.AlignRight) self.layoutBrowser.addLayout(layoutKolomCari) self.setVisiblePencari(False) def perintahTutupPencarian(self): self.setVisiblePencari(False) def perintahBukaPencarian(self): self.setVisiblePencari(True) self.kolomCari.setFocus() def cariPrevious(self): teks = self.kolomCari.text() gtw = QtWebKit.QWebPage.FindBackward self.webBrowser.findText(teks, gtw) def cariNext(self): teks = self.kolomCari.text() self.webBrowser.findText(teks) def setVisiblePencari(self, argumen): self.tombolPrevious.setVisible(argumen) self.tombolNext.setVisible(argumen) self.kolomCari.setVisible(argumen) self.teks.setVisible(argumen) self.tombolTutup.setVisible(argumen) def perintahWeb(self): self.webBrowser.load(QtCore.QUrl('http://mn-belajarpython.blogspot.co.id')) def browse(self): url = 'https://google.co.id' if self.kolomUrl.text(): try: url = self.kolomUrl.text() url = url.lower() penampungUrl = [] for i in url: penampungUrl.append(i) if penampungUrl[0] != 'h' and penampungUrl[1] != 't' and penampungUrl[2] != 't' and penampungUrl[ 3] != 'p' and penampungUrl[3] != 's' and penampungUrl[3] != '/' and penampungUrl[3] != '/': if penampungUrl[0] == 'w' and penampungUrl[1] == 'w' and penampungUrl[2] == 'w' and penampungUrl[ 3] == '.': url = 'https://' + url else: urlPengganti = '' for i in url: if i != ' ': urlPengganti += i else: urlPengganti += '+' url = "https://www.google.co.id/search?espv=2&q=" + urlPengganti except: urlPengganti = '' for i in url: if i != ' ': urlPengganti += i else: urlPengganti += '+' url = "https://www.google.co.id/search?espv=2&q=" + urlPengganti self.webBrowser.load(QtCore.QUrl(url)) self.tombolMaju.setEnabled(self.webBrowser.history().canGoForward()) self.tombolKembali.setEnabled(self.webBrowser.history().canGoBack()) self.webBrowser.iconChanged.connect(self.kirimIcon) self.webBrowser.urlChanged.connect(self.setKolomUrl) self.webBrowser.loadProgress.connect(self.setValueProgressbar) self.webBrowser.loadFinished.connect(self.selesaiMemuat) self.webBrowser.titleChanged.connect(self.kirimJudul) self.webBrowser.show() def selesaiMemuat(self): self.tombolReload.setIcon(self.style().standardIcon(QtGui.QStyle.SP_BrowserReload)) self.progressBar.setVisible(False) def perintahKembali(self): self.webBrowser.back() def perintahMaju(self): self.webBrowser.forward() def perintahReload(self): self.webBrowser.reload() def setKolomUrl(self): self.kolomUrl.setText(self.webBrowser.url().toString()) def getPosisiMemory(self): return (str(self)) def kirimJudul(self): judul = self.webBrowser.title() tab = self.parent memori = self.getPosisiMemory() toolTip = judul judulBaru = '' if len(judul) > 10: for i in range(len(judul)): judulBaru += judul[i] if i > 9: judul = judulBaru + '...' break tab.setJudul(judul, memori, toolTip) def closeEvent(self, event): self.destroy() if __name__ == '__main__': app = QtGui.QApplication(sys.argv) main = TabDialog() main.show() sys.exit(app.exec_())
Dan berikut contoh screenshoot dari mini aplikasi kali ini...
Agar berhasil, Pastikan PC kalian terhubung dengan internet ya temen - temen...
Penjelasan code program Aplikasi Browser PySide versi 10.0
Sekarang saya akan mencoba untuk menjelaskan code program yang sudah saya bagikan di atas tadi.. Agar kalian lebih mudah untuk memahaminya.. Oke, Langsung saja..[NOTE : Teks berwarna MERAH pada penjelasan adalah Code tambahan yang tidak ada di versi sebelumnya. Dan yang Berwarna BIRU akan di hapus di versi berikutnya. Jika Code berwarna MERAH dan komentar berwarna BIRU maka merupakan code baru dan akan di hapus di versi berikutnya]
from PySide import QtCore, QtGui, QtWebKit //mengimport class yang di butuh kan dari library pyside
import sys //mengimport sys
class TabDialog(QtGui.QMainWindow): //class ‘TabDialog’ (inheritncce class QMainWindow)
def __init__(self): //construktor class ‘TabDialog’
QtGui.QMainWindow.__init__(self) //menjalankan class parent (QMainWindow)
self.penampungTab = [] //membuat penampung tab
self.tambah = False //inisialisasi variabel tambah.
self.inisialisasiTab() //menjalankan metode ‘inisialisasiTab’
self.tambahTab() //menjalankan metode ‘tambahTab’
self.tabKeWindow() //menjalankana metode ‘tabKeWindow’
def inisialisasiTab(self): //metode ‘inisialisasiTab’
self.elemenTab = QtGui.QTabWidget(self) //inisialisasi tab
self.elemenTab.setMovable(True) //agar tab bisa di pindahkan
self.elemenTab.tabCloseRequested.connect(self.tutup) //menjalankan metode ‘tutup’ jika klik tutup (x) tab
self.tabButton = QtGui.QToolButton(self) //tombol tambah tab
self.tabButton.setText('+') //mengubah teks tombol tambah tab
font = self.tabButton.font() //mendapatkan font tombol
font.setBold(True) //membuat teks tombol menjadi tebal
self.tabButton.setFont(font) //memasukkan teks ke tombol kembali
self.elemenTab.setCornerWidget(self.tabButton, QtCore.Qt.TopLeftCorner) //memasukkan tombol tambah ke bagian kiri tab
self.tabButton.clicked.connect(self.tambahTab) //menjalankan metode ‘tambahTab’ jika klik tombol tambah
def tambahTab(self): //metode ‘tambahTab’
self.penampungTab.append(Browser(parent=self)) //memasukkan class browser ke penampung tab
a = self.elemenTab.addTab(self.penampungTab[len(self.penampungTab) - 1], "Google") //membuat tab baru
self.elemenTab.setTabShape(QtGui.QTabWidget.Triangular) //mengatur gaya tab
self.tambah = True //mengubah nilai variabel ‘tambah’ (menandakan tab sudah di tambah)
if self.elemenTab.count() < 2: //mengecek apakah tab kurang dari 2
self.elemenTab.setTabsClosable(False) //membuat tab tidak bisa di tutupp (menyembunyikan tombol x)
else: //jika tab lebih dari satu
self.elemenTab.setTabsClosable(True) //membuat tab bisa di tutup (menampilkan tombol x)
self.elemenTab.setCurrentIndex(self.elemenTab.count() - 1) //mengubah posisi tab aktif ke tab baru
def tabKeWindow(self): //metode ‘tabKeWindow’
self.centralWidget = QtGui.QWidget(self) //inisialisasi widget utama tab
mainLayout = QtGui.QVBoxLayout(self.centralWidget) //membuat ‘layoutUtama’
mainLayout.addWidget(self.elemenTab) //memasukkan ‘tab’ ke layout utama
mainLayout.setContentsMargins(0, 0, 0, 0) //menghapus margin layout utama
self.setCentralWidget(self.centralWidget) //memasukkan layout utama ke window
self.setWindowTitle("Mini WebBrowser -> mn-belajarpython.blogspot.co.id") //mengubah judul window
def perintahTutup(self): //metode perintahTutup
if self.elemenTab.count() > 1: //memastikan tab lebih dari satu
posisi = self.elemenTab.currentIndex() //mendapatkan index yang tab yang akan di tutup
self.elemenTab.removeTab(posisi) //menghapus tab
if self.elemenTab.count() == 1: //mengecek apakah jumlah tab sudah sama dengan 1
self.elemenTab.setTabsClosable(False) //membuat tab tidak bisa di tutup
def tutup(self, i): //metode ‘tutup’
self.elemenTab.removeTab(i) //menghapus tab
if self.elemenTab.count() < 2: //mengecek apakah jumlah tab kurang dari dua
self.elemenTab.setTabsClosable(False) //membuat tab tidak bisa di tutup
def setJudul(self, teks, memori, tooltip): //metode untuk mengubah judul
for i in range(self.elemenTab.count()): //perulangan sebanyak jumlah tab
if self.elemenTab.widget(i).getPosisiMemory() == memori: //mengecek tab yang akan di ubah judulnya
self.elemenTab.setTabText(i, teks) //mengubah judul tab yang dituju
self.elemenTab.setTabToolTip(i, tooltip) //juga mengubah tooltip nya
def closeEvent(self, event): //metode yang akan di jalankan secara otomatis jika menutup window aplikasi
self.destroy() //menghancurkan aplikasi
class Browser(QtGui.QMainWindow): //class browser (menurunkan sifat/inheritence class ‘QMainWindow)
def __init__(self, parent=None, url=''): /construktor class ‘browser’
QtGui.QMainWindow.__init__(self) //menjalankan class parent (QMainWindow)
self.parent = parent //menampung nilai variabel parameter ‘parent’
self.resize(800, 600) //mengubah ukuran window
self.centralwidget = QtGui.QWidget(self) //inisialisasi tempat layout browser
self.default_url = "https://google.co.id" //menampung default url
self.urlTab = url //menampung default
self.layout() //menjalanka metode ‘layout’
self.buatToolbar() //menjalankan metode ‘buatToolbar’
self.buatKolomCari() //menjalankan metode ‘buatKolomCari’
self.windowBrowser() //menjalankan metode ‘windowBrowser’
self.browse() //menjalankan metode ‘browse’
def layout(self): //metode ‘layout’
self.layoutUtama = QtGui.QHBoxLayout(self.centralwidget) //membuat layout utama
self.layoutUtama.setContentsMargins(0, 0, 0, 0) //agar tidak ada margin. Agar lebih bagus
self.frame = QtGui.QFrame(self.centralwidget) //membuat frame
self.layoutBrowser = QtGui.QVBoxLayout(self.frame) //membuat layout browser
self.layoutBrowser.setSpacing(0) //agar tidak ada spasi antara komponen
def setValueProgressbar(self, pos): //metode
self.progressBar.setValue(pos) //mengubah nilai progressbar
self.tombolReload.setIcon(self.style().standardIcon(QtGui.QStyle.SP_BrowserStop)) //mengubah icon reload menjadi stop
self.progressBar.setVisible(True) //membuat progressbar terlihat
self.tombolMaju.setEnabled(self.webBrowser.history().canGoForward()) //menentukan hidup atau matinya tombol maju
self.tombolKembali.setEnabled(self.webBrowser.history().canGoBack()) //menentukan hidup atau matinya tombol mundur
def buatToolbar(self): //metode buatToolbar
self.layoutToolbar = QtGui.QHBoxLayout() //membuat layout toolbar
self.kolomUrl = QtGui.QLineEdit(self.frame) //membuat kolom url
self.kolomUrl.returnPressed.connect(self.browse) .//menjalankan metode ‘browse’ ketika klik enter di kolom url
self.tombolKembali = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_ArrowBack), 'kembali', self.frame) //tombol kembali
self.tombolKembali.triggered.connect(self.perintahKembali) //menjalankan metode ‘perintahKembali’ jika klik tombol kembali
self.tombolKembali.setEnabled(False) //mematikan tombol kembali
self.tombolMaju = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_ArrowForward), 'maju', self.frame) //tombol maju
self.tombolMaju.triggered.connect(self.perintahMaju) //menjalankan metode perintahMaju jika klik tombol maju
self.tombolMaju.setEnabled(False) //mematikan tombol maju
self.tombolReload = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_BrowserReload), 'muat ulang',
self.frame) //tombol reload
self.tombolReload.triggered.connect(self.perintahReload) //menjalankan metode ‘perintahReload’ jika klik reload
bar = QtGui.QToolBar() //membuat toolbar
bar.addAction(self.tombolKembali) //memasukkan tombol kembali ke toolbar
bar.addAction(self.tombolMaju) //memasukkan tombol maju ke toolbar
bar.addAction(self.tombolReload) //memasukkan tombol reloadi ke toolbar
self.tombolGo = QtGui.QPushButton(text='Go') //tombol ‘go’
self.tombolGo.clicked.connect(self.browse) //menjalankan metode ‘browse’ ketika di klik
self.layoutToolbar.addWidget(bar) //memasukkan toolbar ke layout toolbar
self.layoutToolbar.addWidget(self.kolomUrl) //memasukkan kolom url ke layout toolbar
self.layoutToolbar.addWidget(self.tombolGo) //memasukkan tombol go ke layout toolbar
self.layoutToolbar.setContentsMargins(0, 0, 0, 0) //mengatur margin toolbar
self.layoutBrowser.setContentsMargins(0, 0, 0, 0) //mengatur margin layout browser
self.layoutBrowser.addLayout(self.layoutToolbar) //memasukkan layout toolbar ke dalam layout Browser
self.menuTabBaru = QtGui.QAction(self, text='Tab Baru') //menu tab baru
self.menuTabBaru.triggered.connect(self.parent.tambahTab) //menjalankan metode ‘tambahTab’ di class ‘TabDialog’ jika menu tab baru di klik
self.menuTutupTab = QtGui.QAction(self, text='Tutup Tab') //menu tutup tab
self.menuTutupTab.triggered.connect(self.parent.perintahTutup) //menjlankan metode ‘perintahTutup’ di class ‘TabDialog’ jika menu tutup tab di klik
self.menuCetak = QtGui.QAction(self, text='Cetak') //membuat menu cetak
self.menuCetak.triggered.connect(self.perintahCetak) //menjalankan metode ‘perintahCetak’ jika menu cetak di klik
self.menuCari = QtGui.QAction(self, text='Cari') //menu cari
self.menuCari.triggered.connect(self.perintahBukaPencarian) //menjalankan metode ‘perintahBukaPencarian’ jika klik cari
self.menuWeb = QtGui.QAction(self, text='Web') //menu web
self.menuWeb.triggered.connect(self.perintahWeb) //menjalankan metode ‘perintahWeb’ jika menu web di klik
self.menuAbout = QtGui.QAction(self, text='About') //menu about
self.menuAbout.triggered.connect(self.tentang) //menjalankan metode ‘tentang’ jika menu About di klik
self.menuAboutQt = QtGui.QAction(self, text='About Qt') //menu about qt
self.menuAboutQt.triggered.connect(self.tentangQt) //menjalankan metode ‘tentangQt’ jika menu ‘about Qt’ di klik
self.menuExit = QtGui.QAction(self, text='Exit') //menu exit
self.menuExit.triggered.connect(self.close) //menjalankan metode ‘close’ jika menu Exit di klik
self.menu = QtGui.QMenu(self) //membuat menu bar
self.menu.addAction(self.menuTabBaru) //memasukkan menu ‘tab baru’
self.menu.addAction(self.menuTutupTab) //memasukkan menu ‘tutup tab’
self.menu.addSeparator() //memberikan garis pembatas
self.menu.addAction(self.menuCetak) //memasukkan menuCetak ke menu bar
self.menu.addAction(self.menuCari) //memasukkan menu cari
self.menu.addSeparator() //membuat garis
self.menu.addAction(self.menuAbout) //memasukkan menu about ke menubar
self.menu.addAction(self.menuAboutQt) //memasukkan menu aboutQt ke menubar
self.menu.addAction(self.menuWeb) //memasukkan menu web ke menubar
self.menu.addSeparator() //membuat garis pembatas
self.menu.addAction(self.menuExit) //memasukkan menu exit ke menubar
self.buttonShow = QtGui.QPushButton(self) //membuat tombol menu
self.buttonShow.setText("") //mengosongkan teks tombol
self.buttonShow.setMenu(self.menu) //memasukkan menubar ke tombol
self.buttonShow.setFlat(True) //agar tidak ada garis di tombol
self.layoutToolbar.addWidget(self.buttonShow) //memasukkan tombol menu ke window
self.progressBar = QtGui.QProgressBar() //progressbar
self.layoutBrowser.addWidget(self.progressBar) //memasukkan progressbar ke window
self.progressBar.setVisible(False) //menyembunyikan progressbar
def tentang(self): //metode tentang
//pesan tentang aplikasi lainnya
QtGui.QMessageBox.information(self, "Tentang aplikasi",
self.tr("Aplikasi ini merupakan sebuah apliakasi sederhana. "
"Namun, saya rasa aplikasi ini sudah cukup bagus. "
"dari segi design. karena, didukung oleh modul yang "
"cukup lengkap dari PySide. sehingga saya hanya "
"menggunakannya saja\n"
"\nnah gimana ? menarikkan ? yuk kunjungi : "
"mn-belajarpython.blogspot.co.id untuk tutorial "
"menarik lainnya..."))
def tentangQt(self): //metode aboutQt
QtGui.QMessageBox.aboutQt(self) //menampilkan tentang GUI
def perintahCetak(self): //metode perintah cetek
infoPrinter = QtGui.QPrinterInfo() //inisialisasi printer
printer = QtGui.QPrinter(infoPrinter) //printer
self.webBrowser.print(printer) //mencetak halaman
def windowBrowser(self): //metode ‘windwoBrowser’
self.webBrowser = QtWebKit.QWebView() //membuat webBrowser
self.layoutBrowser.addWidget(self.webBrowser) //memasukkan browser ke layout (webBrowser)
self.layoutUtama.addWidget(self.frame) //memasukkan frame ke layout utama
self.setCentralWidget(self.centralwidget) //memasukkan semua layout ke window
def buatKolomCari(self): //metode ‘buatKolomCari’
layoutKolomCari = QtGui.QHBoxLayout(self) //layout kolom cari
self.teks = QtGui.QLabel(self, text='Kata kunci : ') //teks atau label
layoutKolomCari.addWidget(self.teks) //memasukan teks/label ke layout kolom cari
self.tombolNext = QtGui.QPushButton(self, text='Next') //tombol next pencarian
self.tombolPrevious = QtGui.QPushButton(self, text='Previous') //tombol previous pencarian
self.tombolTutup = QtGui.QPushButton(self, text='X') //tombol ‘X’ atau tutup kolom pencarian
self.tombolTutup.clicked.connect(self.perintahTutupPencarian) //menjalankan metode ‘perintahTutupPencarian’ jika klik tombol ‘X’/tutup kolom
self.tombolNext.clicked.connect(self.cariNext) //menjalankan perintah ‘cariNext’ jika klik tombol ‘next’ pencarian
self.tombolPrevious.clicked.connect(self.cariPrevious) //menjalankan perintah ‘cariNext’ jika klik tombol ‘next’ pencarian
self.tombolPrevious.setFlat(True) //membuat tombol previous pencarian agar tidak memiliki border
self.tombolNext.setFlat(True) //membuat tombol next pencarian tak berborder
self.tombolPrevious.setFixedSize(60, 20) //mengatur ukuran tombol previous pencarian
self.tombolNext.setFixedSize(45, 20) //mengatur ukuran tombol next pencarian
self.tombolTutup.setFixedSize(20, 25) //mengatur ukuran tombol tutup pencarian
self.kolomCari = QtGui.QLineEdit(self) //membuat kolom teks pencarian
self.kolomCari.editingFinished.connect(self.cariNext) //menjalankan metode ‘cariNext’ jik tekan enter di kolom pencarian
layoutKolomCari.addWidget(self.kolomCari) //memaukkan kolom pencarian ke layout klom cari
self.kolomCari.setFixedSize(200, 20) //mengatur ukuran kolom pencarian
layoutKolomCari.addWidget(self.tombolNext) //memasukkan tombol next ke layout kolom cari
layoutKolomCari.addWidget(self.tombolPrevious) //memasukkan tombol previous ke layout kolom cari
layoutKolomCari.addWidget(self.tombolTutup) //memasukkan tombol tutup ke layout kolom cari
layoutKolomCari.setAlignment(self.teks, QtCore.Qt.AlignRight) //agar semua komonen (pencarian) berada di kanan window
self.layoutBrowser.addLayout(layoutKolomCari) //memasukkan layoutKolomCari kedalam layout Browser
self.setVisiblePencari(False) //menyembunyikan komponen pencarian (default)
def perintahTutupPencarian(self): //metode ‘perintahTutupPencarian’
self.setVisiblePencari(False) //menyembunyikan semua komponen pencarian
def perintahBukaPencarian(self): //metode ‘perintahBukaPencarian’
self.setVisiblePencari(True) //menampilkan semua komponen pencarian
self.kolomCari.setFocus() //agar kursor ada di kolom cari
def cariPrevious(self): //metode ‘cariPrevious’
teks = self.kolomCari.text() //mendapatkan teks di kolom cari
gtw = QtWebKit.QWebPage.FindBackward //mendapatkan pencarian sebelumnya
self.webBrowser.findText(teks, gtw) //mencari text
def cariNext(self): //metode ‘cariNext’
teks = self.kolomCari.text() //mendpatkan teks di kolom cari
self.webBrowser.findText(teks) //mencari teks
def setVisiblePencari(self, argumen): //metode setVisiblePencarian
self.tombolPrevious.setVisible(argumen) //menyembunyikan/menampilkan tombol previous (tergantung argumen. Di tampilkan jika true. Disembunykan jika false)
self.tombolNext.setVisible(argumen) //menampilkan/menyembunyikan tombol next.
self.kolomCari.setVisible(argumen) //menampilkan/menyembunyikan kolom cari.
self.teks.setVisible(argumen) //menampilkan/menyembunyikan teks label.
self.tombolTutup.setVisible(argumen) //menampilkan/menyembunyikan tombol tutup.
def perintahWeb(self): //metode ‘perintahWeb’
self.webBrowser.load(QtCore.QUrl('http://mn-belajarpython.blogspot.co.id')) //pergi ke blog ini.. Hehe :)
def browse(self): //metode ‘browse’
url = 'https://google.co.id' //url default (google)
if self.kolomUrl.text(): //mengecek apakah kolom url tidak kosong
//kode di bawah merupakan logika untuk menentukan url yang di masukkan adalah sebuah url atau bukan. Jika bukan, maka di alifkan ke pencarian google
try:
url = self.kolomUrl.text()
url = url.lower()
penampungUrl = []
for i in url:
penampungUrl.append(i)
if penampungUrl[0] != 'h' and penampungUrl[1] != 't' and penampungUrl[2] != 't' and penampungUrl[
3] != 'p' and penampungUrl[3] != 's' and penampungUrl[3] != '/' and penampungUrl[3] != '/':
if penampungUrl[0] == 'w' and penampungUrl[1] == 'w' and penampungUrl[2] == 'w' and penampungUrl[
3] == '.':
url = 'https://' + url
else:
urlPengganti = ''
for i in url:
if i != ' ':
urlPengganti += i
else:
urlPengganti += '+'
url = "https://www.google.co.id/search?espv=2&q=" + urlPengganti
except:
urlPengganti = ''
for i in url:
if i != ' ':
urlPengganti += i
else:
urlPengganti += '+'
url = "https://www.google.co.id/search?espv=2&q=" + urlPengganti
self.webBrowser.load(QtCore.QUrl(url)) //memuat url
self.tombolMaju.setEnabled(self.webBrowser.history().canGoForward()) //menentukan hidup atau matinya tombol maju
self.tombolKembali.setEnabled(self.webBrowser.history().canGoBack()) //menentukan hidup atau matinya tombol kembali
self.webBrowser.urlChanged.connect(self.setKolomUrl) //menjalankan metode ‘setKolomUrl’ jika ada perubahan url
self.webBrowser.loadProgress.connect(self.setValueProgressbar) //menjalankan metode ‘setValueProgressbar’ saat proses memuat halaman
self.webBrowser.loadFinished.connect(self.selesaiMemuat) //menjalankan metode ‘selesaiMemuat’ jika loading halaman selesai
self.webBrowser.titleChanged.connect(self.kirimJudul) //menjalankan metode ‘kirimJudul’ jika judul halaman berubah
self.webBrowser.show() //menampilkan window browser
def selesaiMemuat(self): //metode ‘selesaiMemuat’
self.tombolReload.setIcon(self.style().standardIcon(QtGui.QStyle.SP_BrowserReload)) //mengubah icon reload
self.progressBar.setVisible(False) //menyembunyikan progressbar
def perintahKembali(self): //metode ‘perintahKembali’
self.webBrowser.back() //kembali ke halaman sebelumnya
def perintahMaju(self): //metode perintahMaju
self.webBrowser.forward() //maju ke halaman yang telah di kunjungi
def perintahReload(self): //metode ‘perintahReload’
self.webBrowser.reload() //memuat halaman yang sedang di buka
def setKolomUrl(self): //metode ‘setKolomUrl’
self.kolomUrl.setText(self.webBrowser.url().toString()) //mengubah kolom isi kolom url jika url berubah
def getPosisiMemory(self): //metode ‘getMemory’
return (str(self)) //mendpatkan posisi memory class ini
def kirimJudul(self): //metode ‘kirimJudul’
judul = self.webBrowser.title() //mendpatkan judul halaman
tab = self.parent //mendapatkan class TabDialog yang menjadi parent class ini
memori = self.getPosisiMemory() //mendpatkan posisi memory class ini
toolTip = judul //menampung judul sebagai tooltip
judulBaru = '' //inisialisasi variabel
if len(judul) > 10: //mengecek apakah jumlah karakter judul lebih dari 10 karakter
for i in range(len(judul)): //melakukan perulangan sebanyak karakter judul
judulBaru += judul[i] //menampung 9 karakter judul pertama
if i > 9: //memastikan perulangan lebih dari 9 kali
judul = judulBaru + '...' //menambah 9 karakter pertama judul dengan titik titik
Break //menghentikan perulangan
tab.setJudul(judul, memori, toolTip) //memasukkan judul dan tooltip. Dan lokasi memory agar yang di ubah judulnya tepat
def closeEvent(self, event): //metode yang akan otomatis dijalankan ketika window di tutup
self.destroy() //menghancurkan semua class
if __name__ == '__main__': //agar di jalankan pertama kali
app = QtGui.QApplication(sys.argv) //membuat aplkasi
main = TabDialog() //menjalankan class ‘TabDialog’
main.show() //menampilkan aplkasi
sys.exit(app.exec_()) //agar tidak langsung close saat di jalankan
Nah itu dia temen - temen penjelasan code programnya.. Mohon maaf apabila ada penjelasan yang kurang jelas, atau bahkan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya... Biar kita bisa belajar bersama..
Oke terimakasih dan sampai di sini dulu ya... Jangan lupa untuk membaca versi yang lain... Biar ilmunya nambah.. Hehe.. Temikasih sekali lagi dan sekian...
Wassalamualaikum wr. wb.
ConversionConversion EmoticonEmoticon