Ich versuche, einen Text zu drucken, wenn im PyQT5-Programm auf das Taskleistensymbol geklickt wird. Ich habe versucht, das PyQT5 QSystemTrayIcon-aktivierte Signal (das beim Klicken auf das Taskleistensymbol angezeigt wird) mit der benutzerdefinierten Methode zu verbinden, aber die Methode wird nicht aufgerufen. Hier einfach Beispiel:PyQT5 QSystemTrayIcon aktiviertes Signal funktioniert nicht
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_())
In Beispiel gibt 3 Möglichkeiten des Signals zu verbindenden Schlitz (zwei davon kommentiert). Ich habe versucht beide Methoden mit und ohne Dekorateur @pyqtSlot() zu verwenden. Verbindung verursacht keine Fehler. Sogar der Ausdruck von Signalempfängern sagt, dass er mit 1 Schlitz verbunden ist. Es wird jedoch nichts ausgeführt, wenn auf das Systray-Symbol geklickt wird.
Die Frage: Ist die Signalverbindung nicht korrekt, oder wird das Signal überhaupt nicht ausgegeben?
System: Ubuntu 16.04, PyQT5.8. Allerdings sollte auch an anderen Systemen gearbeitet werden, da PyQT Multiplattform-ish ist. PS: Ich habe official PyQT5 signal/slot documentation und viele verwandte Fragen zum Stapelüberlauf gelesen, aber das gleiche Problem nicht gefunden. Der nächste, den ich denke, kann sich beziehen is in C++, aber nicht auf Python. Irgendwelche Tipps würden wirklich geschätzt werden. Vielen Dank! Edit: festen Tippfehler in Text
Ich habe es versucht und es funktioniert gut. Ich benutze Arch Linux, PyQt5.8, Qt5.8 und Gnome als Desktop-Manager. – eyllanesc
@eyllanesc Vielen Dank für das Ausprobieren und detaillierte Informationen. Ich vergaß zu erwähnen, dass ich _Ubuntu_ mit _Unity_, nicht _Gnome_ habe, so dass mich zu einigen Tests führte und ich denke, dass es einen Fehler in _PyQT_ auf _Unity_. Mehr Informationen in meiner Antwort unten. –