1

functools.partial を使用して外部クラス メソッドを通知する pyQt GUI にボタンがあります。

self.Valve_ON.clicked.connect(functools.partial(self.ValveControl.IO_on,6008))

また、ステータスバーにメッセージを表示できるようにしたいと思います

self.statusBar().showMessage("Valve on")

クリックで複数のイベントを通知するにはどうすればよいですか。

ありがとう

4

2 に答える 2

1

シグナル用のスロットを作成し、そこから次のようにコードを実行します。

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

#---------
# IMPORT
#---------
import sys

from PyQt4 import QtGui, QtCore

#---------
# DEFINE
#---------
class MyWindow(QtGui.QMainWindow):
    _numberClicked = 0

    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.centralwidget = QtGui.QWidget(self)

        self.pushButtonClick = QtGui.QPushButton(self.centralwidget)
        self.pushButtonClick.setText("Click Me!")
        self.pushButtonClick.clicked.connect(self.on_pushButtonClick_clicked)

        self.labelClicked = QtGui.QLabel(self)

        self.layoutVertical = QtGui.QVBoxLayout(self.centralwidget)
        self.layoutVertical.addWidget(self.pushButtonClick)
        self.layoutVertical.addWidget(self.labelClicked)

        self.statusbar = QtGui.QStatusBar(self)
        self.statusbar.setObjectName("statusbar")

        self.setCentralWidget(self.centralwidget)
        self.setStatusBar(self.statusbar)

    @QtCore.pyqtSlot()
    def on_pushButtonClick_clicked(self):
        self._numberClicked += 1

        message = "Clicked {0} time(s)".format(self._numberClicked)

        self.labelClicked.setText(message)
        self.statusbar.showMessage(message, 1111)

#---------
# MAIN
#---------
if __name__ == "__main__":    
    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.resize(333, 111)
    main.show()

    sys.exit(app.exec_())
于 2013-09-24T04:06:19.340 に答える
0

必要な数のスロットを信号に接続できます。

self.Valve_ON.clicked.connect(functools.partial(self.ValveControl.IO_on,6008))
self.Valve_ON.clicked.connect(functools.partial(self.statusBar().showMessage,"Valve on"))

ボタンをクリックすると、両方が起動するはずです。

Asignalは任意の数の に接続できslot、aslotには任意の数signalの を接続できます。図書館はあなたに代わってディスパッチのすべてを整理します。

于 2013-09-24T04:11:41.300 に答える