BelajarPython - Assalamualaikum wr. wb.
Jumpa lagi sahabat python.. Pada kesempatan kali ini saya akan mengajak kalian untuk membuat aplikasi slide show nih.. Seperti apa? Langsung saja yuk di simak...
Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi nya, KLIK DISINI ya...
Kali ini, saya akan memberikan versi awal. Dimana pada versi terendah ini saya akan langsung menampilkan semua foto yang ada di folder yang sama di lokasi file python nya kalian simpan.. Jadi pastikan ada file foto ya di folder tempat kalian menyimpan file python aplikasi ini...
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 untuk contoh screenshoot nya saya kesusahan nih... Karena hanya menampilkan foto fullscreen satu layar gaes... Haha.. Oke berikut contoh nya...
Nah seperti di atas tampilan fullscreennya.. Untuk Close/mengakhiri fullscreen silahkan tekan “ESC” pada keyboard ya...
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 sahabat python.. Pada kesempatan kali ini saya akan mengajak kalian untuk membuat aplikasi slide show nih.. Seperti apa? Langsung saja yuk di simak...
Pengenalan aplikasi yang akan kita buat.
Aplikasi yang kita buat kali ini adalah siide show foto yang biasanya ada di pembuka foto.. Namun fungsi ini saya buat menjadi aplikasi mandiri...Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi nya, KLIK DISINI ya...
Kali ini, saya akan memberikan versi awal. Dimana pada versi terendah ini saya akan langsung menampilkan semua foto yang ada di folder yang sama di lokasi file python nya kalian simpan.. Jadi pastikan ada file foto ya di folder tempat kalian menyimpan file python aplikasi ini...
Rincian Lengkap Aplikasi SlideShow foto PySide Versi 1.0
Aplikasi ini menggunakan library PySide.. Jadi, untuk menjalankannya, harus install dulu (KLIK DISINI untuk install).... Dan berikut rincian lengkap versi ini..Nama | : mn-SlideShow 1.0 |
Versi | : 1.0 || selanjutnya. |
Platform | : Python 3.x || Install. |
Modul | : PySide || Install. |
Baris Code | : +-103 baris. |
Penambahan | : +-103 baris. |
Terdiri dari | : 2 class dan 11 metode. |
Fitur | : SlideShow foto di folder yang sama (langsung slideshow). Pastikan ada file foto di folder yang sama tempat menyimpan file python aplikasi ini. tekan “ESC” pada keyboard. |
Kelemahan | : langsung melakukan proses slideshow. |
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 SlideShow foto PySide versi 1.0
Nah lalu seperti apa code program versi ini ? Oke, Berikut saya berikan code program nya ya...import sys import os from PySide import QtGui,QtCore class SlideShow(QtGui.QMainWindow): def __init__(self, imgLst, parent=None): super(SlideShow, self).__init__(parent) self.daftarGambar = imgLst self.posisi = 0 self.waktuGanti = QtCore.QTimer() self.connect(self.waktuGanti, QtCore.SIGNAL("timeout()"), self.gambarSelanjutnya) self.siapkanLayar() self.gambarSelanjutnya() def siapkanLayar(self): screen = QtGui.QDesktopWidget().screenGeometry(self) size = self.geometry() self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.setStyleSheet("QWidget{background-color: #fff;}") self.buildUi() self.showFullScreen() self.putar() def buildUi(self): self.label = QtGui.QLabel() self.label.setAlignment(QtCore.Qt.AlignCenter) self.setCentralWidget(self.label) def gambarSelanjutnya(self): if self.daftarGambar: if self.posisi >= len(self.daftarGambar): self.posisi = 0 elif self.posisi < 0 : self.posisi = len(self.daftarGambar)-1 self.showImageByPath( self.daftarGambar[self.posisi]) self.posisi+=1 def showImageByPath(self, path): if path: image = QtGui.QImage(path) pp = QtGui.QPixmap.fromImage(image) self.label.setPixmap(pp.scaled(self.label.size(), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)) def putar(self): self.waktuGanti.start(4000) def keyPressEvent(self, keyevent): event = keyevent.key() if event == QtCore.Qt.Key_Escape: self.close() class pengelolaFile(): def jalankanClass(self, lokasiGambar): if isinstance(lokasiGambar, list): daftarGambar = self.pencariGambar(lokasiGambar) return daftarGambar elif isinstance(lokasiGambar, str): daftarGambar = self.pencariGambar([lokasiGambar]) return daftarGambar else: print(" You can either enter a list of paths or single path") return None def cekFile(self, filename): if filename.endswith('PNG') or filename.endswith('png') or filename.endswith('JPG') or filename.endswith('jpg'): return True def pencariGambar(self, lokasiGambar): kembalian = [] for lokasi in lokasiGambar: try: dirContent = os.listdir(lokasi) except OSError: raise OSError("Provided path '%s' doesn't exists." % lokasi) for each in dirContent: selFile = os.path.join(lokasi, each) if os.path.isfile(selFile) and self.cekFile(selFile): kembalian.append(selFile) return list(set(kembalian)) def pembangunAplikasi(lokasi): daftarGambar = pengelolaFile().jalankanClass(lokasi) if daftarGambar : window = SlideShow(daftarGambar) window.show() window.raise_() app.exec_() else: print('Maaf tidak ada file gambar di folder %s untuk di tampilkan' %os.getcwd()) if __name__ == '__main__': app = QtGui.QApplication(sys.argv) lokasi = os.getcwd() if len(sys.argv) > 1: lokasi = sys.argv[1:] pembangunAplikasi(lokasi)
Dan untuk contoh screenshoot nya saya kesusahan nih... Karena hanya menampilkan foto fullscreen satu layar gaes... Haha.. Oke berikut contoh nya...
Nah seperti di atas tampilan fullscreennya.. Untuk Close/mengakhiri fullscreen silahkan tekan “ESC” pada keyboard ya...
Penjelasan code program Aplikasi SlideShow PySide versi 1.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]
import sys //mengimport sys
import os //mengimport os
from PySide import QtGui,QtCore //mengimport class ‘QtGui’ dan ‘QtCore’ dari librari pyside
class SlideShow(QtGui.QMainWindow): //class ‘slideShow’ dengan meng inheritence class ‘QMainWindow’
def __init__(self, imgLst, parent=None): //construktor class ‘SlideShow’
super(SlideShow, self).__init__(parent) //menjalanka construktor class parent
self.daftarGambar = imgLst //menampung nilai parameter ‘imgLst’ (kumpulan lokasi foto)
self.posisi = 0 //inisialisasi variabel ‘posisi’ untuk menentukan urutan foto yang ditampilkan
self.waktuGanti = QtCore.QTimer() //inisialisasi penghitung mundur
self.connect(self.waktuGanti, QtCore.SIGNAL("timeout()"), self.gambarSelanjutnya) //menjalankan metode ‘gambarSelanjutnya’ jika penghitung mundur selesai
self.siapkanLayar() //menjalankan metode ‘siapkanLayar’
self.gambarSelanjutnya() //menjalankan metode ‘gambarSelanjutnya’
def siapkanLayar(self): //metode siapkan layar
screen = QtGui.QDesktopWidget().screenGeometry(self) //mendapatkan ukuran layar monitor
size = self.geometry() //mendapatkan ukuran window aplikasi ini
self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2) //memindahkan window ke tengah layar
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) //membuat window aplikasi ini selalu ada di atas semua window yang terbuka
self.setStyleSheet("QWidget{background-color: #fff;}") //membuat warna layar amenjadi putih
self.buildUi() //menjalankan metode ‘buildUi’
self.showFullScreen() //memanggil metode ‘showFullScreen’
self.putar() //memanggil metode ‘putar’
def buildUi(self): //metode ‘buildUi’
self.label = QtGui.QLabel() //membuat label (tempat foto)
self.label.setAlignment(QtCore.Qt.AlignCenter) //agar foto ada di tengah
self.setCentralWidget(self.label) //memasukkan label ke dalam window
def gambarSelanjutnya(self): //metode ‘gambarSelanjutnya’
if self.daftarGambar: //memastikan ada gambar di folder tempat code python
if self.posisi >= len(self.daftarGambar): //mengecek apakah nilai ‘posisi’ sama atau lebih besar dari total foto
self.posisi = 0 //mereset nilai ‘posisi’ menjadi 0 jika memenuhi kriteria di atas
elif self.posisi < 0 : //mengecek apakah nilai variabel ‘posisi’ kurang dari 0
self.posisi = len(self.daftarGambar)-1 //mengubah nilai ‘posisi’ menjadi jumlah foto di kurangi 1 jika nilai sebelumnya kurang dari 0
self.showImageByPath(
self.daftarGambar[self.posisi]) //menjalankan metode ‘showImageByPath’ dengan memasukkan lokasi gambar di urutan nilai posisi sebagai parameter
self.posisi+=1 //menambah nilai ‘posisi’ agar foto terus berubah
def showImageByPath(self, path): //metode ‘showImageByPath’
if path: //memastikan path (pameter) tidak kosong
image = QtGui.QImage(path) //inisialisasi foto
pp = QtGui.QPixmap.fromImage(image) //mengubah foto
self.label.setPixmap(pp.scaled(self.label.size(), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)) //menyesuaikan ukuran foto/gambar
def putar(self): //metode ‘putar’
self.waktuGanti.start(4000) //memulai hitung mundur selama 4000 mili detik atau 4 detik
def keyPressEvent(self, keyevent): //metode yang akan di jalankan secara otomatis ketika ada penekanan tombol
event = keyevent.key() //mendapatkan tombol apa yang di tekan
if event == QtCore.Qt.Key_Escape: //mengecek apakah user menekan ‘ESC’ pada keyboard
self.close() //menutup window
class pengelolaFile(): //class ‘pengelolaFile’
def jalankanClass(self, lokasiGambar): //metode ‘jalankanClass’
if isinstance(lokasiGambar, list): mengecek apakah parameter ‘lokasiGambar’ adalah sebuah list
daftarGambar = self.pencariGambar(lokasiGambar) //menjalankan metode ‘pencariGambar’
return daftarGambar //mengembalikan nilai ‘daftarGambar’
elif isinstance(lokasiGambar, str): //mengecek apakah nilai parameter ‘lokasiGambar’ adalah string
daftarGambar = self.pencariGambar([lokasiGambar]) //menjalankan metode ‘pencariFile’
return daftarGambar //mengembalikan nilai ‘daftarGambar’
else: //jika prameter bukan string dan list
print(" You can either enter a list of paths or single path") //mencetak pesan error
return None //mengembalikan kosongan
def cekFile(self, filename): //metode cek file
if filename.endswith('PNG') or filename.endswith('png') or filename.endswith('JPG') or filename.endswith('jpg'): //mengecek apakah file ber ekstens jpg atau png. (apakah file foto)
return True //mengambalikan true jika merupakan file foto
def pencariGambar(self, lokasiGambar): //metode ‘pencariGambar’
kembalian = [] //inisialisasi variabel ‘kembalian’ (list)
for lokasi in lokasiGambar: //melakukan perulangan sebanyak data (list) di variabel parameter ‘lokasiGambar’
try: //mencoba code program
dirContent = os.listdir(lokasi) //mengambil semua file di lokasi (folder)
except OSError: //jika error di try
raise OSError("Provided path '%s' doesn't exists." % lokasi) //mencetak pesan error
for each in dirContent: //melakukan perulangan sebanyak file yang di dapat
selFile = os.path.join(lokasi, each) //menggabungkan nama dan path file
if os.path.isfile(selFile) and self.cekFile(selFile): //melakukan pengecekan apakah file gambar
kembalian.append(selFile) //menampung file jika file adalah foto
return list(set(kembalian)) //mengembalikan hasil penampung file foto
def pembangunAplikasi(lokasi): //metode pembangun aplikasi
daftarGambar = pengelolaFile().jalankanClass(lokasi) //menjalankan class ‘pengelolaFile’ untuk mendapatkan file foto/gambar
if daftarGambar : //memastikan ada file foto di folder
window = SlideShow(daftarGambar) //menjalankan class ‘SlideShow’
window.show() //menampikan window slideshow
window.raise_() //membuat foto berada di paling atas window aplikasi
app.exec_() //meng eksekusi aplikasi
else: //jika tidak ada file foto
print('Maaf tidak ada file gambar di folder %s untuk di tampilkan' %os.getcwd()) //mencetak pesan error
if __name__ == '__main__': //code yang akan di jalankan pertama kali
app = QtGui.QApplication(sys.argv) //inisialisasi class ‘QApplication’
lokasi = os.getcwd() //mendapatkan lokasi file code python ini berada
if len(sys.argv) > 1: //jika banyaknya sys.argv lebih dari 1
lokasi = sys.argv[1:] //mengubah nilai variabel nilai pertama di ‘sys.argv’
pembangunAplikasi(lokasi) //menjalankan metode ‘pembangunAplikasi’ untuk menampilkan window
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