BelajarPython - Assalamualaikum wr. wb.
Jumpa lagi sahabat python.. Pada kesempatan kali ini saya akan mengajak kalian untuk membuat mini aplikasi lagi.. Aplikasi apa? Langsung saja di simak ya..
Postingan ini akan memberikan versi ke 8 dari aplikasi kali ini. Yang akan menambahkan fitur untuk menampung beberapa video untuk diputar secara urut. .
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...
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 mini aplikasi lagi.. Aplikasi apa? Langsung saja di simak ya..
Pengenalan aplikasi yang akan kita buat.
Aplikasi yang kita buat kali ini adalah pemutar video dengan fitur yang standard seperti umum nya saja... 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...Postingan ini akan memberikan versi ke 8 dari aplikasi kali ini. Yang akan menambahkan fitur untuk menampung beberapa video untuk diputar secara urut. .
Rincian Lengkap Aplikasi Pemutar Video PySide Versi 9.0
Aplikasi ini menggunakan library PySide.. Sehingga, kalian perlu menginstall library tersebut untuk menjalankan aplikasi ini.. Klik disini kalau belum install..Nama | : mn-VideoPlayer 9.0 |
Versi | : 9.0 || selanjutnya. |
Bahasa | : Python 3.x || Install. |
Modul | : PySide || Install. |
Baris Code | : +-329 baris. |
Penambahan | : +-80 baris. |
Terdiri dari | : 1 class dan 26 metode. |
Fitur | : Daftar pustaka file. (menampung lebih dari satu file video untuk diputar) |
Kelemahan | : harus memutar video secara urut. |
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 Pemutar Video PySide versi 9.0
Nah lalu seperti apa code program versi ini ? Oke, Berikut saya berikan code program nya ya...from PySide import QtGui, QtCore from PySide.phonon import Phonon import os class PemutarVideo(QtGui.QMainWindow, QtGui.QWidget): def __init__(self): super(PemutarVideo, self).__init__() self.penampungPath = [] self.initUI() self.indeks = 0 self.volume = self.pemutarVideo.volume() def initUI(self): self.setWindowTitle('Pemutar Video -> mn-belajarpython.blogspot.co.id') self.layout = QtGui.QGridLayout(self) self.layoutTombol = QtGui.QHBoxLayout(self) self.inisialisasiMedia() self.buatMenubar() self.buatSliderVolume() self.buatToolbar() self.agarWaktuDiPerbarui() self.layout.setRowStretch(0, 1) self.layout.setColumnStretch(2,2) centralWidget = QtGui.QWidget() centralWidget.setLayout(self.layout) self.setCentralWidget(centralWidget) self.show() def agarWaktuDiPerbarui(self): self.objekMedia = self.pemutarVideo.mediaObject() self.objekMedia.setTickInterval(1000) self.connect(self.objekMedia, QtCore.SIGNAL('tick(qint64)'), self.perbaruiWaktu) def inisialisasiMedia(self): self.pemutarVideo = Phonon.VideoPlayer(self) self.layout.addWidget(self.pemutarVideo, 0, 0, 1, 6) # set size screenvideo self.audio = self.pemutarVideo.audioOutput() def buatMenubar(self): # QMainWindow subExit = QtGui.QAction(QtGui.QIcon('img/python.ico'), '&Exit', self) subExit.setShortcut('Ctrl+Q') subExit.triggered.connect(self.close) subOpen = QtGui.QAction(QtGui.QIcon('img/upload-2.png'), '&Open', self) subOpen.setShortcut('Ctrl+O') subOpen.triggered.connect(self.perintahBuka) subLibrary = QtGui.QAction('&Pustaka', self) subLibrary.triggered.connect(self.buatWindow) menubar = self.menuBar() menuFile = menubar.addMenu('&File') menuFile.addAction(subOpen) menuFile.addAction(subLibrary) menuFile.addAction(subExit) subNext = QtGui.QAction('&Next', self) subNext.triggered.connect(self.perintahNext) subPrevious = QtGui.QAction('&Previous', self) subPrevious.triggered.connect(self.perintahPrevious) subStop = QtGui.QAction('&Stop', self) subStop.setShortcut('Ctrl+S') subStop.triggered.connect(self.perintahStop) subPlay = QtGui.QAction('&Play/Pause', self) subPlay.setShortcut('Ctrl+P') subPlay.triggered.connect(self.putarAtauPause) menuVideo = menubar.addMenu('&Video') menuVideo.addAction(subPlay) menuVideo.addAction(subStop) menuVideo.addSeparator() menuVideo.addAction(subPrevious) menuVideo.addAction(subNext) self.subMute = QtGui.QAction('&Mute', self) self.subMute.triggered.connect(self.perintahMute) subPerbesar = QtGui.QAction('&Perbesar', self) subPerbesar.triggered.connect(self.perintahPerbesar) subPerkecil = QtGui.QAction('&Perkecil', self) subPerkecil.triggered.connect(self.perintahPerkecil) menuAudio = menubar.addMenu('&Audio') menuAudio.addAction(self.subMute) menuAudio.addSeparator() menuAudio.addAction(subPerbesar) menuAudio.addAction(subPerkecil) subWeb = QtGui.QAction('&Pergi Ke Web', self) subWeb.triggered.connect(self.perintahWeb) menuWeb = menubar.addMenu('&Web') menuWeb.addAction(subWeb) subAbout = QtGui.QAction('&Tentang aplikasi', self) subAbout.triggered.connect(self.tentang) subAboutQt = QtGui.QAction('&Tentang modul', self) subAboutQt.triggered.connect(self.tentangQt) menuAbout = menubar.addMenu('&About') menuAbout.addAction(subAbout) menuAbout.addAction(subAboutQt) def buatSliderVolume(self): self.sliderProsesVideo = Phonon.SeekSlider(self) self.layout.addWidget(self.sliderProsesVideo,2,2,1,2) self.sliderProsesVideo.setMediaObject(self.pemutarVideo.mediaObject()) self.sliderVolume = Phonon.VolumeSlider(self) # memanggil objek sliderVolume self.layout.addWidget(self.sliderVolume,2,5) self.sliderVolume.maximumVolume() # createMaximum Sound when objek Created self.sliderVolume.setAudioOutput(self.audio) # memasukkan objek sliderVolume untk mengatur volume self.waktuPutar = QtGui.QLabel('00:00:00') self.layout.addWidget(self.waktuPutar,2,1) self.waktuTotal = QtGui.QLabel('00:00:00') self.layout.addWidget(self.waktuTotal,2,4) def perintahBuka(self): dialog = QtGui.QFileDialog(self) # memanggil objekFileDialog dialog.setFileMode(QtGui.QFileDialog.ExistingFiles) # memanggil objek dengan semua tipe file if dialog.exec_() == QtGui.QDialog.Accepted: path = dialog.selectedFiles() adaAtauTidak = False for i in path : for j in self.penampungPath: if i == j[0] : adaAtauTidak = True if not adaAtauTidak : lokasi=QtCore.QFileInfo(i).absolutePath() self.penampungPath.append([i,lokasi]) if self.pemutarVideo.isPlaying() != True: self.putarVideo() def putarAtauPause(self): if self.penampungPath : if self.pemutarVideo.isPlaying() : self.pemutarVideo.pause() self.tombolPlay.setIcon(self.style().standardIcon(QtGui.QStyle.SP_MediaPlay)) else : self.tombolPlay.setIcon(self.style().standardIcon(QtGui.QStyle.SP_MediaPause)) self.pemutarVideo.play() else: self.perintahBuka() def putarVideo(self): self.pemutarVideo.play(self.dapatkanData()) self.pemutarVideo.finished.connect(self.selesai) def perintahStop(self): self.tombolPlay.setIcon(self.style().standardIcon(QtGui.QStyle.SP_MediaPlay)) self.pemutarVideo.stop() def perintahPrevious(self): waktuPutar = self.pemutarVideo.currentTime() if waktuPutar > 5000 : self.pemutarVideo.seek(waktuPutar-5000) def perintahNext(self): waktuPutar = self.pemutarVideo.currentTime() total = self.pemutarVideo.totalTime() if total-5000>waktuPutar : self.pemutarVideo.seek(waktuPutar+5000) def perintahMute(self): if self.pemutarVideo.volume() == 0 : self.subMute.setText('Mute') self.pemutarVideo.setVolume(self.volume) else : self.subMute.setText('UnMute') self.volume=self.pemutarVideo.volume() self.pemutarVideo.setVolume(0) def perintahPerbesar(self): volume = self.pemutarVideo.volume() if volume < 1.0 : self.pemutarVideo.setVolume(volume+0.1) def perintahPerkecil(self): volume = self.pemutarVideo.volume() if volume > 0.0 : self.pemutarVideo.setVolume(volume-0.1) def buatToolbar(self): self.tombolPlay = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaPlay), self.tr("Play"), self) self.tombolPlay.setShortcut(self.tr("Crl+P")) self.tombolPlay.triggered.connect(self.putarAtauPause) self.tombolStop = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaStop), self.tr("Stop"), self) self.tombolStop.setShortcut(self.tr("Ctrl+S")) self.tombolStop.triggered.connect(self.perintahStop) self.tombolNext = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaSeekForward), self.tr("Next"), self) self.tombolNext.setShortcut(self.tr("Ctrl+N")) self.tombolNext.triggered.connect(self.perintahNext) self.tombolPrevious = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaSeekBackward), self.tr("Previous"), self) self.tombolPrevious.setShortcut(self.tr("Ctrl+R")) self.tombolPrevious.triggered.connect(self.perintahPrevious) self.tombolLibrary = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_DirHomeIcon), self.tr('Pustaka'), self) self.tombolLibrary.triggered.connect(self.buatWindow) bar = QtGui.QToolBar() bar.addAction(self.tombolPlay) bar.addAction(self.tombolPrevious) bar.addAction(self.tombolStop) bar.addAction(self.tombolNext) bar.addAction(self.tombolLibrary) self.layoutTollbar = QtGui.QHBoxLayout() self.layoutTollbar.addWidget(bar) self.layout.addLayout(self.layoutTollbar, 2,0) def perbaruiWaktu(self, time): if self.pemutarVideo.isPlaying() : self.tombolPlay.setIcon(self.style().standardIcon(QtGui.QStyle.SP_MediaPause)) displayTime = QtCore.QTime((time/(1000*60*60))% 60, (time / 60000) % 60, (time / 1000) % 60) self.waktuPutar.setText(displayTime.toString('hh:mm:ss')) total = self.pemutarVideo.totalTime() if total != -1 : displayTime = QtCore.QTime((total / (1000 * 60 * 60)) % 60, (total / 60000) % 60, (total / 1000) % 60) self.waktuTotal.setText(displayTime.toString('hh:mm:ss')) else : self.waktuTotal.setText('00:00:00') self.tombolPlay.setIcon(self.style().standardIcon(QtGui.QStyle.SP_MediaPlay)) def perintahWeb(self): QtGui.QDesktopServices.openUrl(QtCore.QUrl('Http://mn-belajarpython.blogspot.co.id')) 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 closeEvent(self, event): self.destroy() def MasukanData(self, item): self.penampungPath.append(item) def selesai(self): self.indeks += 1 if self.indeks < len(self.penampungPath) : self.pemutarVideo.play(self.dapatkanData()) else : self.pemutarVideo.play(self.dapatkanData()) self.pemutarVideo.stop() def dapatkanData(self): if len(self.penampungPath) > 0 and self.indeks < len(self.penampungPath) : return self.penampungPath[self.indeks][0] else : self.indeks = 0 return self.penampungPath[self.indeks][0] def updateTabel(self): for i in range(self.tablewidget.rowCount()): self.tablewidget.removeRow(0) for i in range(len(self.penampungPath)): namaFile = os.path.basename(self.penampungPath[i][0]) lokasi = str(self.penampungPath[i][1]) self.tablewidget.insertRow(i) namaFile = QtGui.QTableWidgetItem(namaFile) durasi = QtGui.QTableWidgetItem(str(lokasi)) namaFile.setFlags(namaFile.flags() ^ QtCore.Qt.ItemIsEditable) durasi.setFlags(durasi.flags() ^ QtCore.Qt.ItemIsEditable) self.tablewidget.setItem(i,0,namaFile) self.tablewidget.setItem(i,1,durasi) def buatWindow(self): self.wid = QtGui.QWidget() self.wid.resize(450, 250) self.wid.setWindowTitle('Daftar putar') self.wid.show() title = ['Judul', 'Lokasi' ] data = self.penampungPath # besarnya kolom colcnt = len(title) rowcnt = len(data) self.tablewidget = QtGui.QTableWidget(rowcnt, colcnt) #judul vertikal vheader = QtGui.QHeaderView(QtCore.Qt.Orientation.Vertical) vheader.setResizeMode(QtGui.QHeaderView.ResizeToContents) self.tablewidget.setVerticalHeader(vheader) #judul horizontal hheader = QtGui.QHeaderView(QtCore.Qt.Orientation.Horizontal) hheader.setResizeMode(QtGui.QHeaderView.ResizeToContents) self.tablewidget.setHorizontalHeader(hheader) self.tablewidget.setHorizontalHeaderLabels(title) self.updateTabel() layout = QtGui.QHBoxLayout(self.wid) layout.addWidget(self.tablewidget) if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = PemutarVideo() window.show() sys.exit(app.exec_())
Dan berikut contoh screenshoot dari mini aplikasi kali ini...
Penjelasan code program Aplikasi Pemutar Video PySide versi 9.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 QtGui, QtCore //mengimport class QtGui dan QtCore dari pyside
from PySide.phonon import Phonon ///mengimport Phonon dari PySide
class PemutarVideo(QtGui.QWidget): //membuat clas ‘PemutarVideo”
def __init__(self): //construktor dari clas “PemutarVideo”
super(PemutarVideo, self).__init__() //menjalankan superclass (QWidget)
self.path = [] //lokasi Video (kosong awal)
self.initUI() //menjalankan metode ‘initUi’
self.indeks = 0 //menentukan posisi video yang diputar
def initUI(self): //metode ‘initUI’
self.setWindowTitle('Pemutar Video -> mn-belajarpython.blogspot.co.id') //mengubah judl window aplikasi
self.layout = QtGui.QGridLayout(self)i //membuat Layout (grid Layout)
self.inisialisasiMedia() //menjalankan metode ‘inisialisasiMedia’
self.buatMenubar() //menjalankan metode ‘buatMenubar’
self.buatSliderVolume() //menjalankan metode ‘buatSliderVolume’
self.buatToolbar() //menjalankan metode ‘buatToolbar’
self.agarWaktuDiPerbarui()
self.layout.setRowStretch(0, 1) //Menentukan posisi yang akan di ubah ukuran nya saat window di ubah ukurannya
self.layout.setColumnStretch(2, 2) //mengatur area yg akan di perbesar dan diperkecil
centralWidget = QtGui.QWidget() //membuat central widget (tempat video dan tombol)
centralWidget.setLayout(self.layout) //memasukkan layout ytama ke widget
self.setCentralWidget(centralWidget) //memasukkan widget kedalam window
self.show() //menampilkan window
def agarWaktuDiPerbarui(self): //metode ‘agarWaktuDiPerbarui’
self.objekMedia = self.pemutarVideo.mediaObject() //mendapat objek pemutar video
self.objekMedia.setTickInterval(1000) //membuat interval pengulangan
self.connect(self.objekMedia, QtCore.SIGNAL('tick(qint64)'), self.perbaruiWaktu) //menjalankan metode ‘perbaruiWaktu’ setiap detik
def inisialisasiMedia(self): //metode ‘inisialisasiMedia’
self.pemutarVideo = Phonon.VideoPlayer(self) //memanggil class ‘VideoPlayer’ (layar video)
self.layout.addWidget(self.pemutarVideo, 0, 0, 1, 6) # set size screenvideo //memasukkan pemutar video ke dalam window
self.audio = self.pemutarVideo.audioOutput() //membuat audio output Video
def buatMenubar(self): //metode ‘buatMenubar’
subExit = QtGui.QAction(QtGui.QIcon('img/python.ico'), '&Exit', self) //membuat sub meny ‘exit’
subExit.setShortcut('Ctrl+Q') //shortcut submenu exit
subExit.triggered.connect(self.close) //menjalankan metode ‘close’ jik klik submenu ‘exit’
subOpen = QtGui.QAction(QtGui.QIcon('img/upload-2.png'), '&Open', self) //membuat submenu open
subOpen.setShortcut('Ctrl+O') //shortcut submenu open
subOpen.triggered.connect(self.perintahBuka) //menjalakan metode ‘perintahBuka’ jika mengklik sub menu ‘open’
menubar = self.menuBar() //membuat menubar
menuFile = menubar.addMenu('&File') //membuat menu ‘file’
menuFile.addAction(subOpen) //memasukkan submenu ‘open’ kedalam menu file
menuFile.addAction(subExit) //memasukkan submenu ‘exit’ kedalam menu file
subNext = QtGui.QAction('&Next', self) //membuat submenu next
subNext.triggered.connect(self.perintahNext) //menjalankan metode ‘perintahNext’ jika klik sub menu next
subPrevious = QtGui.QAction('&Previous', self) //membuat sub menu previous
subPrevious.triggered.connect(self.perintahPrevious) //menjalankan metode ‘perintahPrevious’ jika klik sub menu previous
subStop = QtGui.QAction('&Stop', self) //membuat sub menu stop
subStop.setShortcut('Ctrl+S') //shortcut submenu stop
subStop.triggered.connect(self.perintahStop) //menjalankan metode ‘perintahStop’ jik klik submenu stop
subPlay = QtGui.QAction('&Play/Pause', self) //submenu play
subPlay.setShortcut('Ctrl+P') //shortcut submenu play
subPlay.triggered.connect(self.putarAtauPause) //menjalankan metode ‘putarAtauPause’ jika sub menu play di klik
menuVideo = menubar.addMenu('&Video') //membuat menu video
menuVideo.addAction(subPlay) //memasukkan submenu ‘play’ kedalam menu video
menuVideo.addAction(subStop) //memasukkan submenu ‘stop’ kedalam menu video
menuVideo.addSeparator() //membuat garis pembatas
menuVideo.addAction(subPrevious) //memasukkan submenu ‘previous’ kedalam menu video
menuVideo.addAction(subNext) //memasukkan submenu ‘next’ kedalam menu video
self.subMute = QtGui.QAction('&Mute', self) //submenu mute
self.subMute.triggered.connect(self.perintahMute) //menjalankan metode ‘perintahMute’ jika klik submenu ‘mute’
subPerbesar = QtGui.QAction('&Perbesar', self) //sub menu perbesar
subPerbesar.triggered.connect(self.perintahPerbesar) //menjalankan metode ‘perintahPerbesar’ jika klik submenu ‘perbesar’
subPerkecil = QtGui.QAction('&Perkecil', self) //submenu perkecil
subPerkecil.triggered.connect(self.perintahPerkecil) //menjalankan metode ‘perintahPerkecil’ jika klik submenu ‘perkecil’
menuAudio = menubar.addMenu('&Audio') //membuat menu ‘Audio’
menuAudio.addAction(self.subMute) //memasukkan submenu ‘mute’ kedalam menu Audio
menuAudio.addSeparator() //membuat garis separator
menuAudio.addAction(subPerbesar) //memasukkan submenu ‘perbesar’ kedalam menu Audio
menuAudio.addAction(subPerkecil) //memasukkan submenu ‘perkecil’ kedalam menu Audio
subWeb = QtGui.QAction('&Pergi Ke Web', self) //submenu ‘pergi ke web’
subWeb.triggered.connect(self.perintahWeb) //menjalankan metode ‘perintahWeb’ jika submenu ‘web’ di klik
menuWeb = menubar.addMenu('&Web') //membuat menu web
menuWeb.addAction(subWeb) //memasukkan sub menu ‘pergi ke web’ ke dalam menu web
subAbout = QtGui.QAction('&Tentang aplikasi', self) //sub menu ‘tentang aplikasi’
subAbout.triggered.connect(self.tentang) //menjalankan metode ‘tentang’ jik klik sub menu ‘tentang aplikasi’
subAboutQt = QtGui.QAction('&Tentang modul', self) //submenu ‘tentang module’
subAboutQt.triggered.connect(self.tentangQt) //menjalankan metode ‘tentangQt’ jika klik submenu ‘Tentang Modul’
menuAbout = menubar.addMenu('&About') //membuat menu ‘about’
menuAbout.addAction(subAbout) //memasukkan submenu ‘tentang aplikasi’ ke menu about
menuAbout.addAction(subAboutQt) //memasukkan submenu ‘tentang modul’ ke menu about
def buatSliderVolume(self): //metode buatSliderVolume
self.sliderProsesVideo =Phonon.SeekSlider(self) //membuat slider progress putar video
self.layout.addWidget(self.sliderProsesVideo,2,0,1,3) //memasukkan slider ke window
self.sliderProsesVideo.setMediaObject(self.pemutarVideo.mediaObject()) //menghubungkan pemutar video dengan slider.
self.sliderVolume = Phonon.VolumeSlider(self) //membuat slider volume
self.layout.addWidget(self.sliderVolume,2,4) //memasukkan slider volume kewindow
self.sliderVolume.maximumVolume() //membuat volume berada di level maksimal
self.sliderVolume.setAudioOutput(self.audio) //menghubungkan slider dengan pemutar viideo
self.waktuPutar = QtGui.QLabel('00:00:00') //membuat teks waktu putar
self.layout.addWidget(self.waktuPutar, 2, 1) //memasukkan teks waktu putar
self.waktuTotal = QtGui.QLabel('00:00:00') //membuat teks total waktu video
self.layout.addWidget(self.waktuTotal, 2, 4) //memasukkan tesk total video
def perintahBuka(self): //metode ‘perintahBuka’
dialog = QtGui.QFileDialog(self) //membuka pemilih file
dialog.setFileMode(QtGui.QFileDialog.ExistingFile) //menentukan prilaku pembuka file
if dialog.exec_() == QtGui.QDialog.Accepted: //memastikan user memilih file
path = dialog.selectedFiles() //mendapatkan file yang dipilih user
adaAtauTidak = False //sebagai penentu ada atau tidak nya file video
for i in path : //melakukan perulangan sebanyak file video yang dipilih
for j in self.penampungPath: //melakukan perulangan sebanyak video di pustaka
if i == j[0] : //memastikan file video yang dipilih tidak ada di daftar pustaka
adaAtauTidak = True //mengubah menjadi true jika file video sudah ada
if not adaAtauTidak : //memastikan video di pilih tidak ada di daftar pustaka (memastikan bernilai false)
lokasi=QtCore.QFileInfo(i).absolutePath() /mendapatkan lokasi file video yang akan dibuka
self.penampungPath.append([i,lokasi]) //memasukkan fil video ke pustaka
if self.pemutarVideo.isPlaying() != True: //mengecek apakah pemutar video tidak sedang memutar
self.putarVideo() //memutar video
def putarAtauPause(self): //metode ‘putarAtauPause’
if self.path : //memastikan variabel ‘path’ tidak kosong
if self.tombolPlay.text() == 'Play' : //mengcek apakah teks tombol adalah ‘Play’
self.tombolPlay.setText('Pause') //mengubah teks tombol menjadi ‘Pause’
self.pemutarVideo.play() //memutar vieo
else : //jika teks tombol tidak sama dengan ‘play’
self.pemutarVideo.pause() //menjeda pemutar
self.tombolPlay.setText('Play') //mengubah teks tombol menjadi play
else: //jika variabel path kosong
self.perintahBuka() //menjalankan metode ‘perintahBuka’
def putarVideo(self): //metode ‘putarVideo’
self.pemutarVideo.play(self.dapatkanData()) //memutar video
self.pemutarVideo.finished.connect(self.selesai) //menjalankan metode ‘selesai’ jika pemutaran video telah usai
def perintahStop(self): //metode ‘perintahStop’
self.tombolPlay.setText('Play') //mengubah teks tombol menajadi ‘play’
self.pemutarVideo.stop() //menghentikan pemutaran video
def perintahPrevious(self): //metode ‘perintahPrevious’
try : //mencoba beberapa code
waktuPutar = self.pemutarVideo.currentTime() //mendapatkan waktu putar video
if waktuPutar > 5000 : //memastikan waktu putar lwbih dari 5 detik (5000 mili detik)
self.pemutarVideo.seek(waktuPutar-5000) //memundurkan pemutaran sebanyak 5 detik (500milidetik)
except : //jika code try error
pass //tidak melakukan apa apa
def perintahNext(self): //metode perintahNext
waktuPutar = self.pemutarVideo.currentTime()) //mendapatkan waktu putar video
waktuTotal = self.pemutarVideo.totalTime() //mendapatkan durasi total video
if waktuTotal-5000 > waktuPutar: //memastiakan waktu total kurang dari 5 detik atau lebih dari durasi total
self.pemutarVideo.seek(waktuPutar+5000) //memajukan waktu putar video
def perintahMute(self): //metode ‘perintahMute’
if self.pemutarVideo.volume() == 0: //mengecek apakah volume dalam ke adaan 0
self.subMute.setText('Mute') //mengubah teks submenu mute
self.pemutarVideo.setVolume(self.volume) //mengubah nilai volume
else: //jika volume tidak 0
self.subMute.setText('UnMute') //mengubah teks submenu mute
self.volume = self.pemutarVideo.volume() //mendpatkan nilai volume
self.pemutarVideo.setVolume(0) //mengubah nilai volume menjadi 0
def perintahPerbesar(self): //metode ‘perintahPerbesar’
volume = self.pemutarVideo.volume() //mendapatkan volume
if volume < 1.0: //memastikan nilai volume lebih kecil dari 1
self.pemutarVideo.setVolume(volume + 0.1) //menambah volume sebanyak 0.1
def perintahPerkecil(self): //metode ‘perintahPerkecil’
volume = self.pemutarVideo.volume() //mendapatkan volume
if volume > 0.0: //memastikan volume lebih besar dari 0.0
self.pemutarVideo.setVolume(volume - 0.1) //mengurangi volume sebesar 0.1
def buatToolbar(self): //metode ‘buatToolbar’
self.tombolPlay = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaPlay), self.tr("Play"), self) //membuat tombol play
self.tombolPlay.setShortcut(self.tr("Crl+P")) //membuat shortcut tombol play
self.tombolPlay.triggered.connect(self.putarAtauPause) //menjalankan metode ‘putarAtauPause’ jika klik tombol play
self.tombolStop = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaStop), self.tr("Stop"), self) //tombol stop
self.tombolStop.setShortcut(self.tr("Ctrl+S")) //shortcut tombol stop
self.tombolStop.triggered.connect(self.perintahStop) //menjalankan metode ‘perintahStop’ jika tombol stop di klik
self.tombolNext = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaSeekForward), self.tr("Next"),self) //tombol next
self.tombolNext.setShortcut(self.tr("Ctrl+N")) //shortcut tombol next
self.tombolNext.triggered.connect(self.perintahNext) //menjalakan metode ‘perintahNext’ jika di klik
self.tombolPrevious = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_MediaSeekBackward),self.tr("Previous"), self) //tombol previous
self.tombolPrevious.setShortcut(self.tr("Ctrl+R")) //shortcut tombol previous
self.tombolPrevious.triggered.connect(self.perintahPrevious) //menjalankan metode ‘peritnahPrevious’ jika tombol previous di klik
self.tombolLibrary = QtGui.QAction(self.style().standardIcon(QtGui.QStyle.SP_DirHomeIcon), self.tr('Pustaka'), self) //membuat tombol pustaka
self.tombolLibrary.triggered.connect(self.buatWindow) //menjalankan metode ‘buatWindow’ jika klik tombol pustaka
bar = QtGui.QToolBar() //membuat toolbar
bar.addAction(self.tombolPlay) //memasukkan tombol play ke toolbar
bar.addAction(self.tombolPrevious) //memasukkan tombol previous ke toolbar
bar.addAction(self.tombolStop) //memasukkan tombol stop ke toolbar
bar.addAction(self.tombolNext) //memasukkan tombol next ke toolbar
bar.addAction(self.tombolBuka) //memasukkan tombol buka ke toolbar
self.layoutTollbar = QtGui.QHBoxLayout() //membuat layout toolbar
self.layoutTollbar.addWidget(bar) //memasukkan layout toolbar ke window
self.layout.addLayout(self.layoutTollbar, 2, 0) //memasukkan toolbar ke layout toolbar
def perbaruiWaktu(self, time): //metode perbarui waktu
displayTime = QtCore.QTime((time / (1000 * 60 * 60)) % 60, (time / 60000) % 60, (time / 1000) % 60) //inisialisasi perbarui waktu pemutaran video
self.waktuPutar.setText(displayTime.toString('hh:mm:ss')) //mengupdate waktu di window
total = self.pemutarVideo.totalTime() //mendapatkan waktu total video
if total != -1: //memastikan total putar video tidak kosong
displayTime = QtCore.QTime((total / (1000 * 60 * 60)) % 60, (total / 60000) % 60, (total / 1000) % 60) //inisialisasi waktu total putar video
self.waktuTotal.setText(displayTime.toString('hh:mm:ss')) //memperbarui nilai teks waktu di window
else: //jika waktu total putar kosong
self.waktuTotal.setText('00:00:00') //mengubah waktu total putar video menjadi 0 jika total waktu jadi kosong
self.tombolPlay.setIcon(self.style().standardIcon(QtGui.QStyle.SP_MediaPlay)) //mengubah ikon tombol play
def perintahWeb(self): //metode perintahWeb
QtGui.QDesktopServices.openUrl(QtCore.QUrl('Http://mn-belajarpython.blogspot.co.id')) //pergi ke blog mn-belajarpython.blogspot.co.id :)
def tentang(self): //metode ‘tentang’
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...")) //menampilkan pesan aplikasi
def tentangQt(self): //metode ‘tentangQt’
QtGui.QMessageBox.aboutQt(self) //menampilkan tentang pyside
def closeEvent(self, event): //metode yang akan di jalankan secara otomatis jika window di tutup
self.destroy() //menghancurkan pemutaran video (class pemutarVideo)
def MasukanData(self, item): //metode ‘masukkanData’
self.penampungPath.append(item) //memasukkan data (video)
def selesai(self): //metode selesai
self.indeks += 1 //menambah nilai indeks
if self.indeks < len(self.penampungPath) : //memastikan indeks tidak lebih dari jumlah video
self.pemutarVideo.play(self.dapatkanData()) /memutar video
else : //jika indeks sudah lebih dari total video
self.pemutarVideo.play(self.dapatkanData()) //memutar video
self.pemutarVideo.stop() //menghentikan pemutaran
def dapatkanData(self): //metode ‘dapatkanData’
if len(self.penampungPath) > 0 and self.indeks < len(self.penampungPath) : //mematikan nilai variabel ‘indeks’ di dalam area jumlah file
return self.penampungPath[self.indeks][0] //mengembalikan lokasi file sesuai indeks
else : //jika nilai variabel indeks sudah diluar area jumlah video
self.indeks = 0 //membuat indeks kembali 0.
return self.penampungPath[self.indeks][0] //memberikan lokasi video posisi pertama
def updateTabel(self): //metode ‘updateTabe’
for i in range(self.tablewidget.rowCount()): //melakukan perulangan sebanyak jumlah baris tabel
self.tablewidget.removeRow(0) //menghapus semua baris tabel
for i in range(len(self.penampungPath)): //melakuan perulangan sebanyak file video di penampungPath
namaFile = os.path.basename(self.penampungPath[i][0]) //mendapatkan nama tiap file video
lokasi = str(self.penampungPath[i][1]) //mendapatkan lokasi tiap video
self.tablewidget.insertRow(i) //menambah baris baru di tabel
namaFile = QtGui.QTableWidgetItem(namaFile) //menjadikan nama file menjadi item tabel
durasi = QtGui.QTableWidgetItem(str(lokasi)) //membuat lokasi file menjadi item tabel
namaFile.setFlags(namaFile.flags() ^ QtCore.Qt.ItemIsEditable) //membuat kolom nama file agar tidak bisa di edit user
durasi.setFlags(durasi.flags() ^ QtCore.Qt.ItemIsEditable) //agar kolom lokasi tidakbisa di edit user
self.tablewidget.setItem(i,0,namaFile) //memasukkan nama file ke tabel
self.tablewidget.setItem(i,1,durasi) //memasukkan lokasi file ke tabel
def buatWindow(self): //metode ‘buatWindow’
self.wid = QtGui.QWidget() //membuat window baru
self.wid.resize(450, 250) //mengubah ukuran window
self.wid.setWindowTitle('Daftar putar') //mengubah judul
self.wid.show() //menampilkan window
title = ['Judul', 'Lokasi' ] //judul tabel
data = self.penampungPath //mendapatkan penampung path untuk mengetahui total video
# besarnya kolom
colcnt = len(title) //menghitung jumlah judul tabel
rowcnt = len(data) //mendapatkan jumlah video di pustaka
self.tablewidget = QtGui.QTableWidget(rowcnt, colcnt) //membuat tabel sebanyak jumlah video
#judul vertikal
vheader = QtGui.QHeaderView(QtCore.Qt.Orientation.Vertical) //mengaktifkan judul samping
vheader.setResizeMode(QtGui.QHeaderView.ResizeToContents) //mengubah ukuran agar sesuai kontern
self.tablewidget.setVerticalHeader(vheader) //memasukkkan judul samping video
#judul horizontal
hheader = QtGui.QHeaderView(QtCore.Qt.Orientation.Horizontal) //judul atas
hheader.setResizeMode(QtGui.QHeaderView.ResizeToContents) //membuat lebar kolom sesuai konten
self.tablewidget.setHorizontalHeader(hheader) //memasukkan judul atas
self.tablewidget.setHorizontalHeaderLabels(title) //memasukkan nama nama judul atas tabel
self.updateTabel() //menjalankan metode ‘updateTabel’
layout = QtGui.QHBoxLayout(self.wid) //membuat layout
layout.addWidget(self.tablewidget) //memasukkan tabel ke dalam window (layout)
if __name__ == '__main__': //agar di jalankan pertama kali saat file python dieksekusi
import sys //menngimport class sys dari python
app = QtGui.QApplication(sys.argv) //mendefinisikan window aplikasi
window = PemutarVideo() //menjalankan class ‘PemutarVideo’
window.show() //menampilkan window pemutar video
sys.exit(app.exec_()) //agar window tidak langsung tertutup saat dijalankan
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