PySide: Menghubungkan Banyak Widget ke Slot yang Sama

langit 69 togel

nusabet 777 slot login

secret casino hentai

online casino mit trustly

PySide: Menghubungkan Banyak Widget ke Slot yang Sama

Tutorial ini membahas cara menghubungkan beberapa widget ke slot yang sama. Dengan kata lain, kita akan mengikat sinyal widget (event) ke slot (callable seperti fungsi atau metode) yang dikenal sebagai penangan event. Ada dua pendekatan utama: menggunakan functoolsl untuk melewatkan parameter, atau menggunakan kemampuan instrospeksi PySide untuk mengambil informasi dari widget pemanggil. Metode lainnya adalah menggunakan fungsi lambda. Berikut penjelasan masing-masing.

Memulai

Jika Anda belum memiliki PySide, instal terlebih dahulu. Untuk PyQt, pastikan versi 4.3 atau lebih baru agar contoh partial berikut berfungsi. Kode di bawah menunjukkan penggunaan berbagai metode.

from functools import partialfrom PySide import SIGNALfrom PySide import QApplication, QLabel, QWidgetfrom PySide import QPushButton, QVBoxLayout########################################################################class MultiButtonDemo(QWidget): """""" #---------------------------------------------------------------------- def __init__ (self): """Constructor""" super(MultiButtonDemo, self). __init__ () layout = QVBoxLayout() self = QLabel("You haven't pressed a button!") # use a normal signal / slot mechanic button1 = QPushButton("One") selft(button1, SIGNAL("clicked()"), self) # now let's use partial functions button2 = QPushButton("Two") selft(button2, SIGNAL("clicked()"), partial(selfon, "Two")) button3 = QPushButton("Three") self3Callback = partial(selfon, "Three") clickedt(self3Callback) # now let's try using a lambda function button4 = QPushButton("Four") clickedt(lambda name="Four": selfon(name)) layoutget(self) layoutget(button1) layoutget(button2) layoutget(button3) layoutget(button4) selfout(layout) selfdowTitle("PySide Demo") #---------------------------------------------------------------------- def one(self): """""" labelt("You pressed One!") #---------------------------------------------------------------------- def onButton(self, lbl): """Change the label to the text (lbl) passed in""" labelt("You pressed %s!" % lbl)#----------------------------------------------------------------------if __name__ == "__main__": app = QApplication([]) form = MultiButtonDemo() form() app_()

Penjelasan: Kita membuat subkelas QWidget sebagai jendela. Tata letak menggunakan QVBoxLayout vertikal. Tombol pertama dihubungkan dengan cara standar ke metode one. Tombol kedua menggunakan functoolsl untuk memanggil onButton dengan argumen "Two". Tombol ketiga juga menggunakan partial tetapi disimpan sebagai atribut kelas. Tombol keempat menggunakan lambda dengan parameter default. Semua tombol kecuali tombol pertama menggunakan metode onButton yang menerima label sebagai argumen.

Cara Membuat PySide Memberi Tahu

Kode berikut menunjukkan cara membuat semua tombol terhubung ke satu slot dan menggunakan self() untuk mengidentifikasi tombol yang ditekan.

from PySide import SIGNALfrom PySide import QApplication, QLabel, QWidgetfrom PySide import QPushButton, QVBoxLayout########################################################################class MultiButtonDemo(QWidget): """""" #---------------------------------------------------------------------- def __init__ (self): """Constructor""" super(MultiButtonDemo, self). __init__ () layout = QVBoxLayout() self = QLabel("You haven't pressed a button!") layoutget(self) labels = ["One", "Two", "Three", "Four"] for label in labels: btn = QPushButton(label) clickedt(selfd) layoutget(btn) selfout(layout) selfdowTitle("PySide Signals / Slots Demo") #---------------------------------------------------------------------- def clicked(self): """ Change label based on what button was pressed """ button = self() if isinstance(button, QPushButton): labelt("You pressed %s!" % button())#----------------------------------------------------------------------if __name__ == "__main__": app = QApplication([]) form = MultiButtonDemo() form() app_()

Dalam kode ini, kita membuat daftar label tombol dan melakukan loop untuk membuat tombol. Setiap tombol dihubungkan ke metode clicked. Metode tersebut menggunakan self() untuk mendapatkan objek tombol asal, lalu memeriksa apakah itu instance QPushButton dan mengambil teksnya untuk memperbarui label.

Kesimpulan

Sekarang Anda telah mempelajari beberapa cara untuk melewatkan argumen ke slot/handler, serta cara menanyakan PySide widget mana yang memicu slot. Anda dapat menerapkannya dalam proyek Anda sendiri.

pyside slot

▲ Kembali ke atas

Platform Lainnya

GAMEHIWIN

indoseven slot login

rtg online casinos

slots rtp

Berita Piala Dunia

a777 slot

online casino deutschland gesetz

MG055

betnation77 slot

Jika Anda memiliki pertanyaan, silakan kirim email ke [email protected]

▲ Kembali ke atas