Algoritme Pemrograman
#11 – PyQt
Department of Informatics, Institut Teknologi Kalimantan
Apa yang akan kalian pelajari?
Menggunakan Widget yang Umum Digunakan
Menerapkan fungsi pada sinyal-sinyal kejadian pada
masing-masing Widget
Department of Informatics, Institut Teknologi Kalimantan
Apa itu PyQt?
PyQt merupakan Python binding yang merupakan
seperangkat Pustaka C++ dan alat Pengembangan
yang mencakup abstraksi platform-independen
untuk GUI
PyQt juga memiliki fitur seperti SVG, OpenGL, XML,
dan lain-lain.
pip3 install pyqt5
Department of Informatics, Institut Teknologi Kalimantan
Modul Dasar pada PyQt
Qt Core Menyediakan dasar fungsionalitas non-GUI, seperti sinyal dan slot, property, base
classes dari model item, serialisasi, dan lain sebagainya.
Qt GUI Memperluas QtCore dengan fungsionalitas GUI: Event, jendela, dan layer, openGL
dan raster-based 2D painting, dan juga gambar
Qt Widgets Menyediakan widget yang siap untuk digunakan diaplikasi, meliputi elemen grafis
untuk antarmuka yang akan dibuat
Department of Informatics, Institut Teknologi Kalimantan
Aplikasi Pertama PyQt
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
app = QApplication([])
mainWindow = QMainWindow()
mainWindow.setWindowTitle("Hello World!!")
mainWindow.setGeometry(200,200, 700, 500)
mainWindow.show()
sys.exit(app.exec_())
Department of Informatics, Institut Teknologi Kalimantan
Qlabel: Method umum
Method Keterangan
setText(teks) Memuat teks pada label, dapat menggunakan sintaksis
HTML standar
clear() Menghapus teks pada label
resize(width, height) Merubah ukuran widget label
adjustSize() Menyesuaikan ukuran otomatis dengan isi label
setWordWrap(True) Word warp teks
move(x, y) Memindahkan posisi label pada widget/window
setPicture() Memuat gambar pada label, silakan pelajar
dokumentasinya lebih lanjut
Department of Informatics, Institut Teknologi Kalimantan
QLineEdit
…
def teksleditEnter():
teks = teksledit.text()
teksLbl.setText(teks)
teksLbl.adjustSize()
teksLbl = QLabel("Teks Kosong", parent=mainWindow)
teksledit = QLineEdit("", parent=mainWindow)
teksledit.resize(500,50)
teksledit.move(0, 50)
teksledit.returnPressed.connect(teksleditEnter)
…
Department of Informatics, Institut Teknologi Kalimantan
QLineEdit: Method umum
Method Keterangan
setText(teks) Memuat teks pada line edit
clear() Menghapus teks pada line edit
resize(width, height) Merubah ukuran widget line edit
adjustSize() Menyesuaikan ukuran otomatis dengan isi line edit
setReadOnly(True) Membuat mode line edit menjadi hanya dapa dibaca,
tidak dapat disunting
move(x, y) Memindahkan posisi line edit pada widget/window
returnPressed.connect() Menerima fungsi yang akan dieksekusi Ketika
kejadian enter ditekan oleh pengguna di line edit
setClearButtonEnabled(True) Menambahkan tombol clear di line edit
Department of Informatics, Institut Teknologi Kalimantan
QPushButton
…
submitBtn = QPushButton("Submit", parent=mainWindow)
submitBtn.move(510, 50)
submitBtn.setFixedSize(150,50)
fontSaya = QFont()
fontSaya.setBold(True)
fontSaya.setPointSize(14)
submitBtn.setFont(fontSaya)
submitBtn.clicked.connect(teksleditEnter)
…
Department of Informatics, Institut Teknologi Kalimantan
QPushButton: Method umum
Method Keterangan
setText(teks) Memuat teks pada push button
setFont(Qfont) Mengubah gaya font di push button
resize(width, height) Merubah ukuran widget push button
adjustSize() Menyesuaikan ukuran otomatis dengan isi push button
setMenu(QMenu) Menambahkan menu pada push button
move(x, y) Memindahkan posisi push button pada widget/window
clicked.connect() Menerima fungsi yang akan dieksekusi Ketika
kejadian click ditekan oleh pengguna di push button
setToolTip(“teks isi tooltip”) Memunculkan informasi keitka mouse berada diatas
push button tersebut
Department of Informatics, Institut Teknologi Kalimantan
QFont
…
fontSaya = QFont()
fontSaya.setBold(True)
fontSaya.setPointSize(14)
fontSaya.setItalic(True)
fontSaya.setFamily("Consolas")
submitBtn.setFont(fontSaya)
…
Department of Informatics, Institut Teknologi Kalimantan
QMenu
…
menu = QMenu()
menu.addAction("Aksi 1", teksleditEnter)
menu.addAction("Aksi 2", teksleditEnter)
menu.addAction("Aksi 3", teksleditEnter)
submitBtn.setMenu(menu)
…
Department of Informatics, Institut Teknologi Kalimantan
QCheckBox
def updateLbl():
teks = ""
if(pil1CB.isChecked()):
teks += "Pilihan 1 "
if (pil2CB.isChecked()):
teks += "Pilihan 2 "
if (pil3CB.isChecked()):
teks += "Pilihan 3 "
teksLbl.setText(teks)
teksLbl.adjustSize()
#Checkbox
pil1CB = QCheckBox("Pilihan 1", parent=mainWindow)
pil2CB = QCheckBox("Pilihan 2", parent=mainWindow)
pil3CB = QCheckBox("Pilihan 3", parent=mainWindow)
pil1CB.move(10, 110)
pil2CB.move(10, 140)
pil3CB.move(10, 170)
pil1CB.stateChanged.connect(updateLbla)
pil2CB.stateChanged.connect(updateLbl)
pil3CB.stateChanged.connect(updateLbl)
Department of Informatics, Institut Teknologi Kalimantan
QCheckBox: Method umum
Method Keterangan
setText(teks) Memuat teks pada check box
setFont(Qfont) Mengubah gaya font di check box
resize(width, height) Merubah ukuran widget check box
adjustSize() Menyesuaikan ukuran otomatis dengan isi check box
isChekced() Mengecek apakah ter check atau tidak (Boolean)
move(x, y) Memindahkan posisi check box pada widget/window
stateChanged.connect() Menerima fungsi yang akan dieksekusi Ketika
kejadian perubahan pada checkbox terjadi
setToolTip(“teks isi tooltip”) Memunculkan informasi keitka mouse berada diatas
check box tersebut
Department of Informatics, Institut Teknologi Kalimantan
QRadioButton
def updateLblByRadioBtn():
teks = ""
if(pil1RB.isChecked()):
teks = pil1RB.text()
elif(pil2RB.isChecked()):
teks = pil2RB.text()
elif(pil3RB.isChecked()):
teks = pil3RB.text()
teksLbl.setText(teks)
teksLbl.adjustSize()
pil1RB = QRadioButton("A", parent=mainWindow)
pil2RB = QRadioButton("B", parent=mainWindow)
pil3RB = QRadioButton("C", parent=mainWindow)
pil1RB.move(150, 110)
pil2RB.move(150, 140)
pil3RB.move(150, 170)
pil2RB.setChecked(True)
pil1RB.toggled.connect(updateLblByRadioBtn)
pil2RB.toggled.connect(updateLblByRadioBtn)
pil3RB.toggled.connect(updateLblByRadioBtn)
Department of Informatics, Institut Teknologi Kalimantan
QTableWidget
table = QTableWidget(mainWindow)
table.setRowCount(10)
table.setColumnCount(5)
table.setFixedSize(700, 700)
table.setHorizontalHeaderLabels(["No.", "NIM", "Nama", "Alamat", "No. Telp"])
table.setItem(0,0, QTableWidgetItem("1"))
table.setItem(0,1, QTableWidgetItem("101010101"))
table.setItem(0,2, QTableWidgetItem("Andi Fulan"))
table.setItem(0,3, QTableWidgetItem("Jln. Sungai Wein"))
table.setItem(0,4, QTableWidgetItem("087867556464"))
Department of Informatics, Institut Teknologi Kalimantan
QTableWidget
Department of Informatics, Institut Teknologi Kalimantan
QTableWidget
table.cellClicked.connect(printItem)
def printItem(row, column):
print(row, column)
if(table.item(row, column) != None):
print(table.item(row, column).text())
Department of Informatics, Institut Teknologi Kalimantan