0
我正在使用一個應該從外部bash腳本接收信號的程序(使用:kill -USR1 pid),並更新QLabel。使用Python/PyQt4接收信號的問題
在我的程序中,標籤只有在鼠標懸停在'標籤按鈕'後纔會更新。我在下面創建了一個簡化的示例,因爲我的程序太多,無法查看。在這個例子中,信號處理函數只在關閉窗口時執行(如果我將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()
感謝您的答覆。 信號捕獲器是initUI函數的內部,我認爲它允許它不需要自我參數,也許不是最佳實踐,但我曾嘗試過這兩種方法。 將信號連接放在主函數中似乎是一件好事,但這並沒有幫助,並且您提供的示例代碼爲我生成了相同的結果。 您是否運行了您提供的代碼?並且在發送USR1信號給過程時實際上有標籤變化? – jfnichols 2013-03-03 16:05:59