BelajarPython - Assalamualaikum wr. wb.
Jumpa lagi sahabat python.. Pada kesempatan kali ini saya akan mengajak kalian membuat aplikasi screenshoot nih.. Seperti apa? Langsung saja di simak ya...
Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi aplikasi ini, KLIK DISINI ya...
Kali ini, saya akan memberikan versi ke 4. Dimana pada versi ini saya akan menambahkan fitur untuk menyimpan foto hasil screenshoot yang kalian ambil..
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...
Nah lalu, seperti apa tampilan yang di hasilkan dari code program di atas? Langsung saja yuk kita simak sama - sama tampilannya di bawah 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 membuat aplikasi screenshoot nih.. Seperti apa? Langsung saja di simak ya...
Pengenalan aplikasi yang akan kita buat.
Aplikasi yang kita buat kali ini adalah aplikasi screenshoot yang sudah tidak asing lagi.. Dimana aplikasi ini berfungsi untuk memotret layar PC kalian untuk di jadikan sebagai file gambar...Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi aplikasi ini, KLIK DISINI ya...
Kali ini, saya akan memberikan versi ke 4. Dimana pada versi ini saya akan menambahkan fitur untuk menyimpan foto hasil screenshoot yang kalian ambil..
Rincian Lengkap Screenshoot PySide Versi 4.0
Aplikasi ini menggunakan library PySide.. Jadi, untuk menjalankannya, harus install dulu (KLIK DISINI untuk install).... Dan berikut rincian lengkap versi ini..Nama | : mn-Screenshoot 4.0 |
Versi | : 4.0 || selanjutnya. |
Platform | : Python 3.x || Install. |
Modul | : PySide || Install. |
Baris Code | : +- 137 baris. |
Penambahan | : +-29 baris. |
Terdiri dari | : 1 class dan 10 metode. |
Fitur | : Menyimpan hasil screenshoot. |
Kelemahan | : Masih memotret keseluruhan window. (tidak seperti snipping tool di windows). |
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 Screenshoot versi 4.0
Nah lalu seperti apa code program versi ini ? Oke, Berikut saya berikan code program nya ya...from PySide import QtCore, QtGui class Screenshot(QtGui.QWidget): def __init__(self): super(Screenshot, self).__init__() self.buatTombol() self.tempatHasil = QtGui.QLabel() self.tempatHasil.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) self.tempatHasil.setAlignment(QtCore.Qt.AlignCenter) self.mainLayout = QtGui.QVBoxLayout() self.setScroll() self.buaPengaturan() self.mainLayout.addLayout(self.layoutTombol) self.setLayout(self.mainLayout) self.jeda.setValue(1) self.setWindowTitle("Screenshos -> mn-belajarpython.blogspot.co.id") self.resize(300, 30) self.mainLayout.setContentsMargins(0, 0, 0, 0) def setScroll(self): # mengatur scroll self.scrollArea = QtGui.QScrollArea() self.scrollArea.setWidget(self.tempatHasil) self.scrollArea.setBackgroundRole(QtGui.QPalette.Mid) self.scrollArea.setAlignment(QtCore.Qt.AlignCenter) self.mainLayout.addWidget(self.scrollArea) self.scrollArea.setMinimumSize(700, 400) self.scrollArea.hide() screen = QtGui.QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) def screenshootBaru(self): if self.sembunyikan.isChecked(): self.hide() self.window.setDisabled(True) QtCore.QTimer.singleShot(self.jeda.value() * 1000, self.tangkapLayar) def tangkapLayar(self): QtGui.qApp.beep() self.hasil = None self.hasil = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId()) self.salinan = self.hasil self.updateGambar() self.window.setDisabled(False) if self.sembunyikan.isChecked(): self.show() def updateCheckBox(self): if self.jeda.value() == 0: self.sembunyikan.setDisabled(True) else: self.sembunyikan.setDisabled(False) def buaPengaturan(self): self.jeda = QtGui.QSpinBox() self.jeda.setSuffix("s") self.jeda.setMaximum(9) self.jeda.setFixedSize(40,20) self.jeda.valueChanged.connect(self.updateCheckBox) self.jedaLabel = QtGui.QLabel("Tunda :") self.sembunyikan = QtGui.QCheckBox("Sembunyikan") layoutPengaturan = QtGui.QHBoxLayout() layoutPengaturan.addWidget(self.jedaLabel) layoutPengaturan.addWidget(self.jeda) layoutPengaturan.addWidget(self.sembunyikan) self.layoutTombol.addLayout(layoutPengaturan) self.sembunyikan.setChecked(True) def buatTombol(self): self.window = self.perintahTombol("Tangkap", self.screenshootBaru) self.layoutTombol = QtGui.QHBoxLayout() self.layoutTombol.addStretch() self.layoutTombol.addWidget(self.window) self.layoutTombol.setContentsMargins(4,0,4,4) def perintahTombol(self, text, perintah): button = QtGui.QPushButton(text) button.clicked.connect(perintah) button.setFixedSize(60, 20) return button def updateGambar(self): self.tempatHasil.setMinimumSize(self.hasil.size()) self.tempatHasil.setPixmap(self.hasil) self.scrollArea.show() if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) screenshot = Screenshot() screenshot.show() sys.exit(app.exec_())
Nah lalu, seperti apa tampilan yang di hasilkan dari code program di atas? Langsung saja yuk kita simak sama - sama tampilannya di bawah ini...
Penjelasan code program Aplikasi Screenshoot PySide versi 4.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 //mengimport class ‘QtCore’ dan ‘QtGui’ dari PySIde
class Screenshot(QtGui.QWidget): //membuat class. Dengan mewarisi (inheritence) class ‘QWidget’
def __init__(self): //membuat construktor
super(Screenshot, self).__init__() //memanggil kelas parent
self.buatTombol() //menjalanka metode ‘buatTombol’
self.tempatHasil = QtGui.QLabel() //membuat label (tempatHasil) sebagai tempat gambar hasil screenshoot
self.tempatHasil.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) //membuat ukuran (tempatHasil) mengikuti besar foto
self.tempatHasil.setAlignment(QtCore.Qt.AlignCenter) //membuat tempat foto agar berada di tengah window
self.mainLayout = QtGui.QVBoxLayout() //membuat layout utama
self.setScroll() //menjalankanmetode ‘setScroll’
self.mainLayout.addLayout(self.layoutTombol) //digunaakan untuk memasukkan ‘layoutTombol’ ke layout utama (mainLayout)
self.setLayout(self.mainLayout) //memasukkan layout utama (mainLayout) ke dalam window
self.jeda.setValue(1) //mengubah nilai kolom (jeda) menjadi 1 sebagai nilai default
self.sudahDisimpan = True //inisialisasi variabel untuk memastikan hasil screenshoot telah di simpan. (True=sudah disimpan. False = Belum) nilai default true. Karena belum screenshoot
self.setWindowTitle("Screenshos -> mn-belajarpython.blogspot.co.id") //mengubah judul window
self.resize(300, 30) //mengubah ukuran window
self.mainLayout.setContentsMargins(0, 0, 0, 0) //menghilangkan margin window
def setScroll(self): //metode ‘setScroll’
# mengatur scroll //hanya komentar
self.scrollArea = QtGui.QScrollArea() //mendefinisikan area scroll
self.scrollArea.setWidget(self.tempatHasil) //memasukkan ‘tempatHasil’ sebagai tempat yang akan di scroll
self.scrollArea.setBackgroundRole(QtGui.QPalette.Mid) //menggubah warna background scroll
self.scrollArea.setAlignment(QtCore.Qt.AlignCenter) //agar ‘tempatHasil’ berada di tengah
self.mainLayout.addWidget(self.scrollArea) //memasukkan tempat scroll (scrollArea) ke dalam layout utama
self.scrollArea.setMinimumSize(700, 400) //minimal ukuran area scroll
self.scrollArea.hide() //menyembunyikan tempat scroll (scrollArea) karena belum di screenshoot
screen = QtGui.QDesktopWidget().screenGeometry() //mendapatkan ukuran layar PC
size = self.geometry() //mendpatkan ukuran window
self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) //membuat window tampil ditengah layar PC saat pertama di jalankan
def screenshootBaru(self): //metode ‘screenshootBaru’
if self.sembunyikan.isChecked(): //memastikan checkbox ‘sembunyikan’ tercentang
self.hide() //menyembunyikan window aplikasi (screenshoot) jika checkbox ‘sembunyi’ tercentang
self.window.setDisabled(True) //mematikan tombol ‘tangkap’ (penangkap layar) selama proses hitung mundur untuk memotret layar
QtCore.QTimer.singleShot(self.jeda.value() * 1000, self.tangkapLayar) //menjalankan metode ‘tangkapLayar’ setelah menghitung mundur sebanyak angka yang ada di kolom ‘jeda’
self.sudahDisimpan = False //mengubah nilai variabel ‘sudahDisimpan’ menjadi False setelah selesai screenshoot baru
def saveScreenshot(self): //metode ‘saveScreenshot’
format = 'png' //ekstensi pennyimpanan
initialPath = QtCore.QDir.currentPath() + "/untitled." + format //inisialisasi lokasi penyimpanan hasil screenshoot (sesuai lokasi file python sebagai default)
fileName,_ = QtGui.QFileDialog.getSaveFileName(self, "Save As",
initialPath,
"%s Files (*.%s);;All Files (*)" % (format.upper(), format)) //membuka file dialog pemlih folder tempat menyimpan foto
if fileName: //memastikan user memilih folder (tidak klik cancel)
self.hasil.save(fileName, format) //menyimpan file foto (screenshoot) di lokasi yang sudah di pilih
self.sudahDisimpan =False //mengubah nilai ‘sudahDisimpan’ menjadi ‘False’ yang menandakan sudah disimpan
def tangkapLayar(self): //metode tangkap layar
QtGui.qApp.beep() //membunyikan bunyi (bell) default sistem operasi
self.hasil = None //mendefinisikan variabel ‘hasil’ sebagai penyimpan hasil tangkapan layar
self.hasil = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId()) //mengambil gambar dari layar window PC
self.salinan = self.hasil //menyalin/menyimpan foto hasil screenshoot
self.updateGambar() //menjalankan metode ‘updateGambar’
self.window.setDisabled(False) //menghidupkan kembali tombol’tangkap’ karena proses screen telah selesai
if self.sembunyikan.isChecked(): //memastikan checkbox ‘sembunyikan’ tercentang
self.show() //menampilkan window aplikasi (screenshoot) jika checkbox ‘sembunyi’ tercentang
self.simpan.setEnabled(True) //mengaktifkan tombol ‘simpan’ (setelah memotret layar)
def updateCheckBox(self): //metode ‘updateCheckBox’
if self.jeda.value() == 0: //mengecek apakah nilai combobox ‘jeda’ bernilai 0
self.sembunyikan.setDisabled(True) //mematikan checkbox ‘sembunyi’ jika kolom input ‘checkbox’ jeda bernilai 0
else: //jika kolom jeda tidak bernilai nol
self.sembunyikan.setDisabled(False) //menghidupkan checkbox ‘sebunyi’ jika kolom input ‘checkbox’ jeda TIDAK bernilai 0
def buaPengaturan(self): //metode ‘buatPengaturan’
self.jeda = QtGui.QSpinBox() //membuat kolom input jeda (harus angka)
self.jeda.setSuffix("s") //huruf tanda setelah inputan. Yang menandakan detik/second
self.jeda.setMaximum(9) //maksimal inputan kolom jeda sebesar 9
self.jeda.setFixedSize(40,20) //mengubah ukuran kolom input ‘jeda’
self.jeda.valueChanged.connect(self.updateCheckBox) //menjalankan metode ‘updateCheckBox’ jika ada perubahan nilai di kolom input ‘jeda’
self.jedaLabel = QtGui.QLabel("Tunda :") //membuat label ‘tunda :’
self.sembunyikan = QtGui.QCheckBox("Sembunyikan") //menbuat checkbox “Sembunyikan”
layoutPengaturan = QtGui.QHBoxLayout() //membuat layout pengaturan
layoutPengaturan.addWidget(self.jedaLabel) //memasukkan label ‘Tunda :’ kedalam ‘layoutPengaturan’
layoutPengaturan.addWidget(self.jeda) //memasukkan kolom input jeda ke dalam ‘layoutPengaturan’
layoutPengaturan.addWidget(self.sembunyikan) //memasukkan checkbox ‘Sembunyikan” ke dalam layout Pengaturan
self.layoutTombol.addLayout(layoutPengaturan) //memasukkan ‘layoutPengaturan’ ke dalam ‘layoutTombol’
self.sembunyikan.setChecked(True) //membuat checkbox ‘sembunyikan’ tecentang (sebagai default saat pertama kali di jalankan)
def buatTombol(self): //metode ‘buatTombol’
self.window = self.perintahTombol("Tangkap", self.screenshootBaru) //digunakan untuk menjalankan metode ‘perintahTombol’ untuk membuat tombol parameter 1 sebagai nama dan parameter 2 sebagai perintah
self.simpan = self.perintahTombol("Simpan",self.saveScreenshot) //digunakan untuk menjalankan metode ‘perintahTombol’ untuk membuat tombol parameter 1 sebagai nama dan parameter 2 sebagai perintah
self.layoutTombol = QtGui.QHBoxLayout() //membuat layout tombol
self.layoutTombol.addStretch() //menambahkan stretch yang akan membesar/mengecil jika window di perbesar atau di perkecil
self.layoutTombol.addWidget(self.window) //memasukkan tombol di dalam variabel ‘window’
self.layoutTombol.addWidget(self.simpan) //memasukkan tombol ‘simpan’ ke dalam ‘layoutTombol’
self.layoutTombol.setContentsMargins(4,0,4,4) //mengatur margin layout tombol
self.simpan.setEnabled(False) //mematikan tombol ‘simpan’ sebagai default (karena belum memotret layar)
def perintahTombol(self, text, perintah): //metode ‘perintahTombol’ (pembuat tombol)
button = QtGui.QPushButton(text) //membuat tombol dengan teks yang ada di variabel parameter (text)
button.clicked.connect(perintah) //menghubungkan tombol dengan perintah yang di masukkan di variabel parameter (perintah)
button.setFixedSize(60, 20) //mengubah ukuran tombol
return button //mengembalikan tombol yang telah di buat
def updateGambar(self): //metode ‘updateGamber’
self.tempatHasil.setMinimumSize(self.hasil.size()) //mengubah ukuran minimum ‘tempatHasil’ sesuai ukuran gambar
self.tempatHasil.setPixmap(self.hasil) //memasukkan gambar ke dalam ‘tempatHasil’
self.scrollArea.show() //menampilkan ‘scrollArea’ karena sudah melakukan screenshoot. Dimana sebelumnya telah di sembunyikan di awal
def closeEvent(self, a): //metode yang akan di jalankan secara otomatis ketika aplikasi (screenshoot) ini di tutup
if not self.sudahDisimpan : //mengecek apakah hasil screenshoot belum disimpan (apkah bernilai False)
tombol1 = QtGui.QMessageBox.StandardButton.Yes //tombol yes
tombol2 = QtGui.QMessageBox.StandardButton.No //tombol no
pertanyaan = "apakah anda ingin menyimpan hasil screenshoot nya ?" //membuat teks pertanyaan
response = QtGui.QMessageBox.question(self, "Konfirmasi", pertanyaan, tombol1, tombol2) //menampilkan kotak konfirmasi dengan memasukkan 2 tombol di atas dan teks pertanyaan
if response == QtGui.QMessageBox.Yes: //memastikan user klik tombol ‘yes’
self.saveScreenshot() //menjalankan metode ‘saveScreenshoot’ jika user klik ‘yes’
self.destroy() //menghancurkan/menutup window aplikasi (screenshoot) ini
if __name__ == '__main__': //code yang akan dijalankan pertama
import sys //mengimport class sys dari python
app = QtGui.QApplication(sys.argv) //mendefinisikan class ‘Qapplication’ dari PySide
screenshot = Screenshot() //menjalankan class ‘Screenshoot’
screenshot.show() //menampilkan window ‘Screenshoot’
sys.exit(app.exec_()) //agar window 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