我正在工作的程序应该从外部 bash 脚本接收信号(使用:kill -USR1 pid),并更新 QLabel。
在我的程序中,标签仅在我将鼠标悬停在“标签按钮”上后才会更新。我在下面创建了一个简化的示例,因为我的程序太多而无法浏览。在示例中,信号处理函数仅在关闭窗口时执行(如果我将 USR1 信号发送到其 pid)。
这是示例:
#!/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()