[PYTHON] Hinweise zum Definieren von PySide-Steckplätzen (2)

Wenn Sie ein Signal mit PySide angeben, können Sie es normalerweise wie folgt angeben.

signal_without_arg


# (object).(signal).connect(slot)
self.button1.clicked.connect(self.without_arg)

Wie jedoch angeklickt, Ein wenig Vorsicht ist geboten, wenn das Signal optionale Argumente enthält. Bei der obigen Spezifikationsmethode wird es als Signal ohne optionale Argumente interpretiert. Wenn Sie also ein Signal mit optionalen Argumenten verwenden möchten, müssen Sie den Typ des explizit übergebenen Arguments wie folgt angeben.

signal_with_arg


self.button2.clicked[bool].connect(self.with_arg)

Der Code zum Überprüfen des Verhaltens lautet wie folgt. Wenn Sie auf button1 / button2 klicken, können Sie sehen, dass jede Schaltfläche an einen Steckplatz (without_arg / with_arg) mit einer anderen Anzahl von Argumenten gebunden ist.

onoff_button.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PySide.QtGui import QApplication, QMainWindow, QWidget, QPushButton,\
    QVBoxLayout


class OnOffButtonWidget(QWidget):

    def __init__(self):
        super(OnOffButtonWidget, self).__init__()
        self.__init_ui()
        self.__init_event()

    def __init_ui(self):
        self.button1 = QPushButton('button1', self)
        self.button2 = QPushButton('button2', self)
        self.button1.setCheckable(True)
        self.button2.setCheckable(True)

        vbox = QVBoxLayout()
        vbox.addWidget(self.button1)
        vbox.addWidget(self.button2)
        self.setLayout(vbox)

    def __init_event(self):
        self.button1.clicked.connect(self.without_arg)
        self.button2.clicked[bool].connect(self.with_arg)

    def without_arg(self):
        print 'without_arg'

    def with_arg(self, clicked):
        print 'with arg:{0}'.format(clicked)


def main():
    app = QApplication(sys.argv)
    window = QMainWindow()
    window.setCentralWidget(OnOffButtonWidget())
    window.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

(Ausgabe beim Klicken auf die Schaltfläche)

output


without_arg   (Ausgabe, wenn auf button1 geklickt wird)
with arg:True (Ausgabe, wenn auf button2 geklickt wird)

Nachtrag

Da Sie den Standardwert anhand des Dokuments sehen können (z. B. angeklickt ([markiert = falsch])), können Sie mithilfe des Standardarguments einen gemeinsamen Steckplatz angeben.

with_optional


    def __init_event(self):
        self.button1.clicked.connect(self.with_optional)
        self.button2.clicked[bool].connect(self.with_optional)

    def with_optional(self, clicked=False):
        print 'with arg:{0}'.format(clicked)

Nachtrag 2

Aktiviert In einigen Fällen sind der Name und die Anzahl der Argumente gleich, aber nur der Typ des Arguments ist unterschiedlich. In diesem Fall muss der Typ angegeben werden.

with_same


    def __init_event(self):
        self.combo.activated[str].connect(self.on_activated)
        self.combo.activated[int].connect(self.on_activated_init)

    def on_activated(self, text):
        self.label.setText(text)

    def on_activated_init(self, index):
        print index

Recommended Posts

Hinweise zum Definieren von PySide-Steckplätzen (2)
Vorsichtsmaßnahmen beim Definieren von Slots für PySide
Hinweise zur Flasche
Sellerie-Notizen zu Django
Installieren Sie PySide2 unter Ubuntu
Hinweise zur Installation von PycURL
Hinweise zur Verwendung von Alembic
Hinweise zu Funktionen der SciPy.linalg-Familie
Hinweise zur Funktion und Rückverfolgung
Hinweise zur Installation von dlib auf einem Mac
Hinweise zum SQLite3-Modul von Python
Anmerkungen zu * args und ** kargs
[Django] Hinweise zur Verwendung der Django-Debug-Symbolleiste
Anmerkungen zu Pyenv und Atom
[Python] Hinweise zur Datenanalyse
Hinweise zur Optimierung mit Pytorch
Hinweise zur Installation von Python auf Ihrem Mac
Hinweise zur Installation von pipenv auf Ihrem Mac
Hinweise zur Installation von Anaconda 3 unter Windows
Hinweise zu imshow () von OpenCV
Hinweise zur Installation von Python unter CentOS
Hinweise zu Python- und Wörterbuchtypen
Hinweise zur Paketverwaltung mit conda
Hinweise zur Verwendung von Post-Receive und Post-Merge
Hinweise zur Verwendung von featuretools
Hinweise zur Installation von Python mit PyEnv
Hinweise zur Verwendung von rstrip mit Python.
Hinweise zum Zugriff auf dashDB über Python
Hinweise zur Verwendung von matplotlib auf dem Server
Hinweise zum Schreiben von require.txt
Hinweise zur Installation von Ubuntu 18.04 auf XPS 15 7590
(Anfänger) Hinweise zur Verwendung von pyenv auf dem Mac