Aplikasi Pembuka Foto PySide versi 4

BelajarPython - Assalamualaikum wr. wb.

Jumpa lagi temen - temen... Kali ini, saya akan mengajak kalian untuk membuat sebuah pembuka foto nih.. Dengan tampilan yang cukup bagus.. Karena menggunakan library PySide. Penasaran ? Langsung saja yuk kita simak sama - sama...

Pengenalan aplikasi yang akan kita buat.

Sebenarnya, saya sudah membuat aplkasi pembuka foto juga.. Namun menggunakan library Tkinter.. jadi, tampilannya tidak terlalu menarik dan terlihat jadul (KLIK DISINI untuk melihatnya).. Namun pada projek ini, saya menggunakan PySide untuk mendapatkan fungsi dan tampilan yang lebih baik..

Namun, Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat versi - versi aplikasi ini, KALIAN BISA KLIK DISINI ya temen - temen...

Dan Sekarang, saya akan memberikan versi 4 nya. Dimana pada versi ini saya akan menambahkan fitur untuk menormalkan ukuran foto setelah di utak atik (perbesar & perkeci). Selain itu saya juga akan menambahkan fitur fit to window.. Dimana fitur ini untuk mengubah ukuran foto sesuai ukuran window aplikasi..

Rincian Lengkap Aplikasi Pembuka Foto PySide Versi 4.0

Aplikasi kali ini menggunakan library PySide. Jadi, untuk menjalankannya, harus install dulu... KLIK DISINI untuk menginstallnya.... Dan berikut rincian lengkap aplikasinya...

Nama: mn-FotoView 4.0
Versi: 4.0 | klik disini untuk membaca versi selanjutnya.
Platform: Python 3.x
Modul: PySide. Klik disini untuk menginstallnya.
Baris Code: kurang lebih 176 baris code program.
Terdiri dari: 1 class dan 15 metode.
Fitur: mengubah ukuran foto sesuai ukuran window (fit to window), menormalkan ukuran foto dan mengubah ukuran apliaksi menjadi full screen.
Kelemahan: Tidak efisien dalam membuka foto.
syarat menjalankan: install python 3.x dan PySide, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PySide, copy dan paste code program pada editor atau IDE, simpan dalam file python(ekstensi .py), lalu jalankan.

Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu.. 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 Pembuka Foto PySide versi 4.0

Nah lalu seperti apa code program dari aplikasi Pemutar Musik PySide pada versi kali ini ? Oke, Berikut saya berikan code program nya ya...


from PySide.QtGui import *
from PySide.QtCore import *
import sys,os

class PembukaFoto(QMainWindow):
    def __init__(self):
        super(PembukaFoto, self).__init__()

        self.ukuranGambar = 1.0

        self.layout()
        self.layar()
        self.setScroll()
        self.buatToolBar()

    def layout(self):
        widgetLayout=QWidget(self)
        self.mainLayout =QVBoxLayout(widgetLayout)
        self.mainLayout.setContentsMargins(0,0,0,0)
        self.mainLayout.setSpacing(0)
        self.setCentralWidget(widgetLayout)

    def layar(self):
        self.tempatFoto = QLabel(self)
        self.tempatFoto.setScaledContents(True)
        self.mainLayout.addWidget(self.tempatFoto)

    def setScroll(self):
        # mengatur scroll
        self.scrollArea = QScrollArea()
        self.scrollArea.setWidget(self.tempatFoto)
        self.scrollArea.setBackgroundRole(QPalette.Light)
        self.scrollArea.setAlignment(Qt.AlignCenter)

        self.mainLayout.addWidget(self.scrollArea)

    def bukaGambar(self, gambar):
        image = QImage(gambar)
        pp = QPixmap.fromImage(image)
        self.tempatFoto.setPixmap(pp.scaled(pp.size(), Qt.KeepAspectRatio))
        self.tempatFoto.adjustSize()
        self.ukuranGambar = 1.0
        self.setWindowTitle(os.path.basename(gambar)+' - mn-belajarpython.blogspot.co.id')

    def buatToolBar(self):
        self.toolBar = QToolBar()

        self.tombolBuka = QAction(self.tr("Buka"), self)
        self.tombolIn = QAction(self.tr("In"), self)
        self.tombolOut = QAction(self.tr("Out"), self)
        self.tombolFull = QAction(self.tr("Full"), self)
        self.tombolFit = QAction(self.tr("Fit"), self,checkable=True)
        self.tombolNormal = QAction(self.tr("Normal"), self)

        self.tombolBuka.triggered.connect(self.buka)
        self.tombolIn.triggered.connect(self.perbesar)
        self.tombolOut.triggered.connect(self.perkecil)
        self.tombolNormal.triggered.connect(self.ukuranNormal)
        self.tombolFit.triggered.connect(self.pasJendela)
        self.tombolFull.triggered.connect(self.tampilanPenuh)

        self.tombolIn.setEnabled(False)
        self.tombolOut.setEnabled(False)
        self.tombolNormal.setEnabled(False)
        self.tombolFit.setEnabled(False)
        self.tombolFull.setEnabled(False)

        self.toolBar.addSeparator()
        self.toolBar.addAction(self.tombolBuka)
        self.toolBar.addSeparator()
        self.toolBar.addAction(self.tombolIn)
        self.toolBar.addAction(self.tombolOut)
        self.toolBar.addSeparator()
        self.toolBar.addAction(self.tombolFull)
        self.toolBar.addSeparator()
        self.toolBar.addAction(self.tombolNormal)
        self.toolBar.addAction(self.tombolFit)
        self.toolBar.addSeparator()


        self.layoutToolbar = QHBoxLayout()
        self.layoutToolbar.addStretch()
        self.layoutToolbar.addWidget(self.toolBar)
        self.layoutToolbar.addStretch()
        self.layoutToolbar.setContentsMargins(0,0,0,0)

        self.mainLayout.addLayout(self.layoutToolbar)

    def perbesar(self):
        self.ubahUkuran(1.25)
        if self.ukuranGambar != 1 :
            self.tombolNormal.setEnabled(True)
        else :
            self.tombolNormal.setEnabled(False)

    def perkecil(self):
        self.ubahUkuran(0.8)
        if self.ukuranGambar != 1 :
            self.tombolNormal.setEnabled(True)
        else :
            self.tombolNormal.setEnabled(False)

    def ukuranNormal(self):
        self.tempatFoto.adjustSize()
        self.ukuranGambar = 1.0
        self.tombolNormal.setEnabled(False)

    def pasJendela(self):
        pasJendela = self.tombolFit.isChecked()
        self.scrollArea.setWidgetResizable(pasJendela)
        if not pasJendela:
            self.ukuranNormal()
            self.tombolFit.setText('Fit')
        else :
            self.tombolFit.setText('unFit')
        self.pengaktifTombol()

    def ubahUkuran(self, factor):
        self.ukuranGambar *= factor
        self.tempatFoto.resize(self.ukuranGambar * self.tempatFoto.pixmap().size())
        self.tempatFoto.setAlignment(Qt.AlignRight)

    def pengaktifTombol(self):
        self.tombolIn.setEnabled(not self.tombolFit.isChecked())
        self.tombolOut.setEnabled(not self.tombolFit.isChecked())
        if self.ukuranGambar != 1 and self.tombolFit.isChecked() == False:
            self.tombolNormal.setEnabled(True)
        else :
            self.tombolNormal.setEnabled(False)
        self.tombolFull.setEnabled(not self.tombolFit.isChecked())

    def keyPressEvent(self, keyevent):
        event = keyevent.key()
        if event == Qt.Key_Escape:
            self.tampilanPenuh()

    def tampilanPenuh(self):
        if self.isFullScreen():
            self.showNormal()
            self.tombolFull.setText('Full')
        else:
            self.showFullScreen()
            self.tombolFull.setText('unFull')


    def buka(self):
        fileName,_ = QFileDialog.getOpenFileName(self, "Pilih File Gambar", QDir.currentPath(), filter="JPG (*.jpg);;PNG (*.png);;All (*.*) ")

        if fileName:
            image = QImage(fileName)
            if image.isNull():
                QMessageBox.information(self, "Image Viewer",
                        "Maaf! tidak bisa membuka file --> %s." % os.path.basename(fileName))
                return

            self.bukaGambar(fileName)

            self.tombolFit.setEnabled(True)
            self.pengaktifTombol()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setQuitOnLastWindowClosed(True)
    window = PembukaFoto()
    window.show()
    window.setGeometry(0,0,700,500)
    window.setWindowTitle('Photo Viewer - mn-belajarpython.blogspot.co.id')

    screen = QDesktopWidget().screenGeometry()
    size = window.geometry()
    window.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)

    sys.exit(app.exec_())


Nah lalu, seperti apakah tampilan yang akan di hasilkan dari code program di atas? Langsung saja yuk kita simak sama - sama tampilannya di bawah ini...



Penjelasan code program Aplikasi Pembuka Foto 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 yuk kita simak sama penjelasannya di bawah ini....
[NOTE : Teks berwarna MERAH pada penjelasan adalah Code tambahan yang tidak ada di versi sebelumnyaDan 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.QtGui import *  //mengimport class ‘QtGui’ dan turunannya
from PySide.QtCore import *  //mengimport class ‘QtCore’ dan turunannya
import sys,os  //import class sys dan os

class PembukaFoto(QMainWindow):  //membuat class ‘PembukaFoto’. Dengan menurunkan class ‘QmainWindow’
    def __init__(self):  //membuat construktor class ‘PembukaFoto’
        super(PembukaFoto, self).__init__()  //memanggil construktor dari parent class ‘PembukaFoto’

        self.ukuranGambar = 1.0  //digunakan untuk nilai ukuran gambar pertama kali

        self.layout()  //menjalankan metode ‘layout’
        self.layar()  //menjalankan metode ‘layar’
        self.setScroll()  //menjalankan metode ‘setScroll’
        self.buatToolBar()  //menjalankan metode ‘buatToolBar’

    def layout(self):  //membuat metode ‘layout’
        widgetLayout=QWidget(self)  //Memanggil dan menampung class ‘Qwidget’
        self.mainLayout =QVBoxLayout(widgetLayout)  //membuat layout utama
        self.mainLayout.setContentsMargins(0,0,0,0)  //mengatur window agar tidak ada margin
        self.mainLayout.setSpacing(0)  //mengatur agar tidak ada jarak tiap elemen agar
        self.setCentralWidget(widgetLayout)  //memasukkan widget pada variabel ‘WidgetLayout’ untuk menjadi layout utama di window

    def layar(self):  //membuat metode ‘layar’
        self.tempatFoto = QLabel(self)  //membuat QLabel sebagai tempat menampilkan foto
        self.tempatFoto.setScaledContents(True)  //membuat ukuran label ‘tempatFoto’ agar mengikuti ukuran foto
        self.mainLayout.addWidget(self.tempatFoto)  //memasukkan Tempat foto ke dalam layout utama / window

    def setScroll(self):  //membuat metode ‘setScroll’
        # mengatur scroll
        self.scrollArea = QScrollArea()  //membuat area scroll
        self.scrollArea.setWidget(self.tempatFoto)  //memasukkan ‘tempatFoto’ sebagai area yang akan di beri scroll bar
        self.scrollArea.setBackgroundRole(QPalette.Light)  //memberikan warna background area scroll
        self.scrollArea.setAlignment(Qt.AlignCenter)  //membuat ‘tempatFoto’ berada di tengah area scrollbar

        self.mainLayout.addWidget(self.scrollArea)  //memasukkar area scrollbar ke main layout/window

    def bukaGambar(self, gambar):  //membuat metode ‘bukaGambar’ dengan 1 buah parameter
        image = QImage(gambar)  //memuat foto dengan memasukkan path yang ada di variabel ‘gambar’
        pp = QPixmap.fromImage(image)  //membuat pixmap
        self.tempatFoto.setPixmap(pp.scaled(pp.size(), Qt.KeepAspectRatio))  //memasukkan foto (pixmap) ke dalam label (tempatFoto)
        self.tempatFoto.adjustSize()  //mengatur ukuran tempat foto agar sesuai
        self.setWindowTitle(os.path.basename(gambar)+' - mn-belajarpython.blogspot.co.id')  //mengubah judul menjadi nama foto

    def buatToolBar(self):  //membuat metode ‘buatToolBar’
        self.toolBar = QToolBar()  //inisialisasi toolbar

        self.tombolBuka = QAction(self.tr("Buka"), self)  //Membuat perintah ‘Buka’
        self.tombolIn = QAction(self.tr("In"), self)   //membuat perintah ‘In’ (Perbesar)
        self.tombolOut = QAction(self.tr("Out"), self)   //membuat perintah ‘Out’ (Perkecil)
        self.tombolFull = QAction(self.tr("Full"), self)  //membuat perintah ‘Full’ (Fullscreen aplikasi)
        self.tombolFit = QAction(self.tr("Fit"), self,checkable=True)  //membuat perintah ‘Fit’ (mengubah ukuran foto sama seperti ukuran aplikasi)
        self.tombolNormal = QAction(self.tr("Normal"), self)  //membuat perintah ‘Normal’ (menormalkan ukuran foto)

        self.tombolBuka.triggered.connect(self.buka)  //menjalanakan metode ‘buka’ ketika perintah ‘Buka’ (Tombol Buka) di klik
        self.tombolIn.triggered.connect(self.perbesar)  //menjalanakan metode ‘perbesar’ ketika perintah ‘In’ (Tombol perbesar) di klik
        self.tombolOut.triggered.connect(self.perkecil)  //menjalanakan metode ‘perkecil’ ketika perintah ‘Out’ (Tombol Perkecil) di klik
        self.tombolNormal.triggered.connect(self.ukuranNormal)  //menjalanakan metode ‘ukuranNormal’ ketika perintah ‘Normal’ (Tombol Normall) di klik
        self.tombolFit.triggered.connect(self.pasJendela)  //menjalanakan metode ‘pasJendela’ ketika perintah ‘Fit’ (Tombol Fit) di klik
        self.tombolFull.triggered.connect(self.tampilanPenuh)  //menjalanakan metode ‘tampilanPenuh’ ketika perintah ‘Full’ (Tombol Full) di klik

        self.tombolIn.setEnabled(False)  //mematikan ‘tombolIn’ (tombol perbesar)
        self.tombolOut.setEnabled(False)  //mematikan ‘tombolOut’ (tombol perkecil)
        self.tombolNormal.setEnabled(False)  //mematikan ‘tomboNormal’ (tombol Normal)
        self.tombolFit.setEnabled(False)  //mematikan ‘tomboFit’ (tombol Fit)
        self.tombolFull.setEnabled(False)  //mematikan ‘tomboFull’ (tombol Full)

        self.toolBar.addSeparator()  //menambah garis pembatas
        self.toolBar.addAction(self.tombolBuka)  //memasukkan perintah ‘Buka’ (tombolBuka)
        self.toolBar.addSeparator()  //menambah garis pembatas
        self.toolBar.addAction(self.tombolIn)  //memasukkan perintah ‘In’ (perintah Perbesar) ke dalam toolbar
        self.toolBar.addAction(self.tombolOut)  //memasukkan perintah ‘Out’ (perintah Perkecil) ke dalam toolbar
        self.toolBar.addSeparator()  //menambah garis pembatas
        self.toolBar.addAction(self.tombolFull)  //memasukkan perintah ‘Full’ (tombol Full)
        self.toolBar.addSeparator()  //menambah garis pembatas
        self.toolBar.addAction(self.tombolNormal)  //memasukkan perintah ‘Normal’ (tombol Normal)
        self.toolBar.addAction(self.tombolFit)  //memasukkan perintah ‘Fit’ (tombol Fit)
        self.toolBar.addSeparator()  //menambah garis pembatas

        self.layoutToolbar = QHBoxLayout()  //membuat layout toolbar
        self.layoutToolbar.addStretch()  //mebuat ‘stretch’ / karet yang akan memanjang ketika window di perbesar
        self.layoutToolbar.addWidget(self.toolBar)  //memasukkan layout toolbar ke window
        self.layoutToolbar.addStretch()  //mebuat ‘stretch’ / karet yang akan memanjang ketika window di perbesar
        self.layoutToolbar.setContentsMargins(0,0,0,0)  //membuat Layout Toolber tidak memiliki margin

        self.mainLayout.addLayout(self.layoutToolbar)  //memasukkan layout toolbar ke dalam window

    def perbesar(self):  //membuat metode perbesar
        self.ubahUkuran(1.25)  //memanggil metode ‘ubahUkuran’ dan memberikan nilai perbesaran (lebih dari 1)
        if self.ukuranGambar != 1 :  //mengecek apakah nilai variabel ‘ukuranGambar’ tidak bernilai 1
            self.tombolNormal.setEnabled(True)  //menghidupkan tombol normal
        else :  //jika nilai variabel ‘ukuranGambar’ adalah 1
            self.tombolNormal.setEnabled(False)  //mematikan tombol normal

    def perkecil(self):  //membuat metode ‘perkecil’
        self.ubahUkuran(0.8)  //memanggil metode ‘ubahUkuran’ dan memberikan nilai perkecilan (kurang dari 1)
        if self.ukuranGambar != 1 :  //mengecek apakah nilai variabel ‘ukuranGambar’ tidak bernilai 1
            self.tombolNormal.setEnabled(True)  //menghidupkan tombol normal
        else :  //jika nilai variabel ‘ukuranGambar’ adalah 1
            self.tombolNormal.setEnabled(False)  //mematikan tombol normal

    def ukuranNormal(self):  //membuat metode ‘ukuranNormal’
        self.tempatFoto.adjustSize()  //menormalkan ukuran foto
        self.ukuranGambar = 1.0  //mengubah nilai variabel ‘ukuranGambar’ menjadi 1
        self.tombolNormal.setEnabled(False)  //mematikan tombol normal

    def pasJendela(self):  //membuat metode ‘pasJendela’
        pasJendela = self.tombolFit.isChecked()  //mengecek apakah perintah ‘fit’ (tombolFit) tercentang. (true = tercentan dan false = tidak tercentang)
        self.scrollArea.setWidgetResizable(pasJendela)  //membuat window agar bisa di resize
        if not pasJendela:  //memastikan perintah ‘Fit’ (tombol Fit) tidak tecentang (karena ada not)
            self.ukuranNormal()  //menjalankan metode ‘ukuranNormal’
            self.tombolFit.setText('Fit')  //mengubah teks perintah ‘TombolFit’ (UnFit) menjadi ‘Fit’
        else :  //jika perintah ‘Fit’ (tombol Fit) tecentang
            self.tombolFit.setText('unFit')  //mengubah teks perintah ‘TombolFit’ (Fit) menjadi ‘UnFit’
        self.pengaktifTombol()  //menjalankan metode ‘pengaktifTombol’

    def ubahUkuran(self, factor):  //membuat metode ‘ubahUkuran’ dengan 1 buah parameter
        self.ukuranGambar *= factor  //mengalikan ukuran foto nilai parameter variabel ‘factor’
        self.tempatFoto.resize(self.ukuranGambar * self.tempatFoto.pixmap().size())  //mengubah ukuran foto
        self.tempatFoto.setAlignment(Qt.AlignRight)  //untuk mengubah align tempat foto

    def pengaktifTombol(self):  //membuat metode ‘pengaktifTombol’
        self.tombolIn.setEnabled(not self.tombolFit.isChecked())  //mematikan atau mematikan perintah ‘In’ (tombol in). (jika tombol ‘Fit’ hidup, maka hidup. Begitu sebaliknya)
        self.tombolOut.setEnabled(not self.tombolFit.isChecked())  //mematikan atau mematikan perintah ‘Out’ (tombol Out). (jika tombol ‘Fit’ hidup, maka hidup. Begitu sebaliknya)
        if self.ukuranGambar != 1 and self.tombolFit.isChecked() == False:  //memastikan variabel ‘ukuranGambar’ tidak sama dengan 1 dan tombo/perintah ‘Fit’ tidak tercentang. (Keduanya harus terpenuhi)
            self.tombolNormal.setEnabled(True)  //menghidupkan tombol/perintah ‘Normal’
        else :  //jika salah satu kondisi di atas salah satu tidak terpenuhi atau keduanya tidak terpenuhi
            self.tombolNormal.setEnabled(False)  //mematikan tombol/perintah ‘Normal’
        self.tombolFull.setEnabled(not self.tombolFit.isChecked())  //mematikan/menghidupkan tombol atau perintah ‘Fit’. (hidup jika tombol ‘Fit’ mati. Dan sebaliknya)

    def keyPressEvent(self, keyevent):  //metode yang akan di jalankan ketika user menekan keyboard atau mouse
        event = keyevent.key()  //mengambil event jika ada user menekan keyboard
        if event == Qt.Key_Escape:  //mengecek apakah tombol yang di klik adalah tombol ‘esc’
            self.tampilanPenuh()  //menjalankan metode ‘tampilanPenuh’

    def tampilanPenuh(self):  //membuat metode ‘penuh’
        if self.isFullScreen():  //mengecek apakah aplikasi dalam ke adaan fullscreen (false = normal screen dan True = fullscreen)
            self.showNormal()  //membuat window aplikasi menjadi normal
            self.tombolFull.setText('Full')  //mengubah teks perintah ‘UnFull’ menjadi ‘Full’  (tombolFull)
        else:  //jika aplikasi tidak dalam keadaan fullscreen
            self.showFullScreen()  //membuat tampilan aplikasi menjadi full screen
            self.tombolFull.setText('unFull')  //mengubah teks perintah ‘Full’ menjadi ‘Unfull’ (tombolFull)

    def buka(self):  //membuat metode ‘buka’
        fileName,_ = QFileDialog.getOpenFileName(self, "Pilih File Gambar", QDir.currentPath(), filter="JPG (*.jpg);;PNG (*.png);;All (*.*) ")  //menampilkan file dialog untuk memilih file foto. Dan menyimpan lokasi foto yang di pilih user ke dalam variabel ‘fileName’

        if fileName:  //memastikan variabel ‘fileName’ tidak kosong (memastikan user memilih file)
            image = QImage(fileName)  //memuat foto
            if image.isNull():  //mengecek file apakah bukan file gambar
                QMessageBox.information(self, "Image Viewer",
                        "Maaf! tidak bisa membuka file --> %s." % os.path.basename(fileName))  //menampilkan kotak dialog peringatan jika user memilih file bukan gambar
                return  //menghentikan proses di metode ini

            self.bukaGambar(fileName)  //membuka file gambar yang di pilih user dengan memanggil metode ‘bukaGambar’ dan memasukkan lokasi gambar yang tersimpan di ‘fileName’

            self.tombolFit.setEnabled(True)  //menghidupkan tombol/perintah ‘Fit’ (tombol Fit)
            self.pengaktifTombol()  //menjalankan metode ‘pengaktifTombol’

if __name__ == '__main__':  //code yang akan di jalankan pertama kali
    app = QApplication(sys.argv)  //insialisasi window
    app.setQuitOnLastWindowClosed(True)  //menutup window lain (aplikasi ini)
    window = PembukaFoto()  //menjalankan class ‘PembukaFoto’
    window.show()  //menampilkan window class ‘PembukaFoto’
    window.setGeometry(0,0,700,500)  //mengatur ukuran window
    window.setWindowTitle('Photo Viewer - mn-belajarpython.blogspot.co.id')  //mengubah judul window

    screen = QDesktopWidget().screenGeometry()  //mendapatkan ukuran layar monitor
    size = window.geometry()  //mendapat ukuran window aplikasi pembuka foto ini
    window.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)  //membuat window pembuka foto berada di tengah layar monitor


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




Nah itu dia temen - temen penjelasan code programnya.. Mohon maaf ya apabila ada penjelasan yang kurang jelas, atau bahkan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya temen - temen... Biar kita bisa belajar bersama - sama..

Oke terimakasih dan sampai di sini dulu ya temen - temen... Jangan lupa untuk membaca versi - versi yang lainnya... Biar ilmunya juga nambah.. Hehe.. Temikasih sekali lagi dan sekian...

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