Dalam pengembangan aplikasi berbasis GUI menggunakan PyQt5, kita seringkali memerlukan cara untuk menghubungkan antara objek-objek yang berbeda. Salah satu contoh penggunaannya adalah pada saat kita ingin mengubah nilai dari sebuah QLineEdit setelah pengguna memilih opsi di sebuah QComboBox.
Contoh 1: Menggunakan Slot
Dalam contoh di bawah ini, kita akan membuat sebuah slot yang akan dipanggil ketika pengguna memilih opsi di dalam QComboBox.
void Window::accessChanged(int index)
{
switch (index) {
case 0:
accessLineEdit->setReadOnly(false);
break;
case 1:
accessLineEdit->setReadOnly(true);
break;
}
}
Dalam contoh di atas, kita memiliki sebuah slot yang namanya accessChanged
. Slot ini akan dipanggil ketika pengguna memilih opsi di dalam QComboBox. Dalam slot ini, kita menggunakan switch-case untuk mengubah nilai dari sebuah QLineEdit.
Contoh 2: Menggunakan Signal dan Slot
Dalam contoh di bawah ini, kita akan membuat sebuah signal yang akan dipanggil ketika pengguna memasukkan teks ke dalam QLineEdit.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class WinDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super(WinDialog, self).__init__(parent)
# ...
self.length_edit.textEdited.connect(self.onTextEdited)
self.thick_edit.textEdited.connect(self.onTextEdited)
def onTextEdited(self):
l = self.length_edit.text()
t = self.thick_edit.text()
self.propertyWidget.display(l, t)
Dalam contoh di atas, kita memiliki sebuah signal yang namanya textEdited
. Signal ini akan dipanggil ketika pengguna memasukkan teks ke dalam QLineEdit. Dalam fungsi onTextEdited
, kita mengambil nilai dari dua QLineEdit dan kemudian memanggil fungsi display
dari objek PropertyWidget
.
Menggunakan QIntValidator
Dalam contoh di bawah ini, kita akan menggunakan QIntValidator untuk memastikan bahwa pengguna hanya dapat memasukkan angka ke dalam QLineEdit.
val_lenght = QtGui.QIntValidator(0, 100000, self.length_edit)
self.length_edit.setValidator(val_lenght)
val_thick = QtGui.QIntValidator(0, 100000, self.thick_edit)
self.thick_edit.setValidator(val_thick)
Dalam contoh di atas, kita membuat sebuah QIntValidator yang akan memastikan bahwa pengguna hanya dapat memasukkan angka ke dalam dua QLineEdit.