PyQT5プログラムでシステムトレイアイコンをクリックしたときにテキストを印刷しようとしています。私はPyQT5 QSystemTrayIcon(システムトレイのアイコンがクリックされたときに出力される)信号をカスタムメソッドに接続しようとしましたが、メソッドが呼び出されませんでした。ここ 簡単な例である:例でPyQT5 QSystemTrayIcon有効化信号が機能しない
import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
@pyqtSlot()
def action(signal):
print('test1')
app = QApplication(sys.argv)
icon = QSystemTrayIcon(QIcon('any_icon.png'), app)
icon.show()
icon.activated.connect(action)
#icon.activated['QSystemTrayIcon::ActivationReason'].connect(action)
#icon.pyqtConfigure(activated=action)
print(icon.receivers(icon.activated)) # to check if is connected
sys.exit(app.exec_())
スロットに信号を接続する3つの方法(それらの2コメント)です。デコレータ@pyqtSlot()の有無にかかわらずメソッドを使ってみました。接続でエラーが発生しません。信号受信機のプリントでさえ、1スロットに接続されていると言われています。ただし、システムトレイのアイコンをクリックしても何もしません。
質問:信号の接続が正しくない、または信号が全く放射されていませんか?
システム:Ubuntu 16.04、PyQT5.8。しかし、PyQTはマルチプラットフォームのように他のシステムでも動作するはずです。 PS:私はofficial PyQT5 signal/slot documentationとスタックオーバーフローに関する多くの関連する質問を読みましたが、同じ問題は見つかりませんでした。私が考える最も近いものはis in C++であるかもしれませんが、Pythonには当てはまりません。 ヒントは本当に感謝しています。どうもありがとうございました! 編集:テキストの入力ミスが修正されました
私はそれを試してもうまくいきます。デスクトップマネージャーとして、Arch Linux、PyQt5.8、Qt5.8、gnomeを使用しています。 – eyllanesc
@eyllanescお試しいただきありがとうございます。 _Ununt_ _を持つ_Ubuntu_、_Gnome_でない があることを忘れてしまったので、いくつかのテストにつながりました。_Unity_ _PyQT_にバグがあると思います。私の答えは以下の通りです。 –