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)
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)
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