外部の bash スクリプトからシグナルを受信し ( kill -USR1 pidを使用)、QLabel を更新するプログラムを作成しています。
私のプログラムでは、「ラベル ボタン」にマウスオーバーした後にのみラベルが更新されます。私のプログラムは多すぎて調べることができないため、以下に簡単な例を作成しました。この例では、シグナル ハンドラー関数はウィンドウを閉じるときにのみ実行されます (その pid に USR1 シグナルを送信した場合)。
次に例を示します。
#!/usr/bin/env python
import os
import sys
import signal
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Base(QWidget):
def __init__(self):
super(Base, self).__init__()
self.initUI()
def initUI(self):
pid = os.getpid()
self.main_label = QLabel(" " + str(pid) + " ")
vbox = QVBoxLayout()
vbox.addWidget(self.main_label)
self.setLayout(vbox)
self.show()
def signalCatcher(signum, stack):
print "signaled!"
self.main_label.setText("signaled!")
signal.signal(signal.SIGUSR1, signalCatcher)
def main():
app = QApplication(sys.argv)
base = Base()
sys.exit(app.exec_())
if __name__ == "__main__":
main()