- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图在 PyQT5 程序中单击系统托盘图标时打印文本。我尝试将 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 种将信号连接到插槽的方法(其中两种已注释)。我尝试了使用带有和不带有装饰器@pyqtSlot() 的方法。连接不会引发任何错误。甚至信号接收器的打印说明它已连接到 1 个插槽。但是,当单击系统托盘图标时,它不会执行任何操作。
问题:是信号连接不正确,还是根本没有发出信号?
系统:Ubuntu 16.04、PyQT5.8。然而,应该也可以在其他系统上工作,因为 PyQT 是多平台的。PS:我看过official PyQT5 signal/slot documentation和许多关于堆栈溢出的相关问题,但没有发现相同的问题。我认为最接近的可能与is in C++有关, 但不适用于 python。任何提示将不胜感激。非常感谢!编辑:修复文本中的拼写错误
最佳答案
您的示例在带有 stalonetray 的 openbox 下的 Xubuntu 中运行良好。但是在 Xubuntu 中它不起作用!但是当我添加如下内容时:
mNu = QMenu()
test = QAction('Test',mNu)
test.triggered.connect(action)
icon.setContextMenu(mNu)
它在 xubuntu 中有效。我似乎不知何故 Ubuntu 只希望在托盘中显示一个菜单。
关于python - PyQT5 QSystemTrayIcon 激活信号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657890/
使用 Kubuntu 18.04 (qt5 5.9.5)、Python 3.6。我无法让此代码显示托盘图标;显示了 Dropbox 等其他图标,但这不是: import sys from PyQt5.
正如标题所说,如果我制作一个系统托盘图标,它可以选择通过那里打开另一个对话框(例如首选项),当我关闭另一个对话框时,整个应用程序将在我调用时关闭这个>关闭();从那个首选项对话框。拿这个例子代码: m
我已将 QSystemTrayIcon::ActivationReason 连接到我的“handleClick”插槽,如下所示 connect(tray,SIGNAL(activated(QSyste
有类似的问题,但他们没有解决我的问题。 我只有一个简单的 MainWindow 类,它会在启动时显示。构造函数包含以下代码: QWidget* centralWidget = new QWidget(
使用 QSystemTrayIcon 对象,我如何确定它当前是否被单击?另外,我如何确定用户何时单击了托盘图标及其关联菜单?我认为这涉及安装事件过滤器? 我想显示 UI,但我只想在托盘图标当前未激活时
我正在创建托盘图标应用程序,我想创建高级上下文菜单,如下图所示,但我只知道如何创建简单的菜单 QMenu* menu = new QMenu() menu->addAction(QIcon(), "i
如何在QSystemTrayIcon的消息显示时禁用或启用声音?它必须只启用或禁用消息的声音。谢谢... 最佳答案 您必须自己发出通知,因为 Qt 不提供此类功能(如果我们谈论的是 QSystemTr
当我运行并退出我的应用程序时,它会在托盘中留下太多托盘图标,而不是只有一个。我还设置了我的应用程序,因此一次只能实例化一个实例,但在程序启动和退出几次后,系统托盘似乎容纳了所有图标,当我将鼠标悬停在它
我有一个名为 StatusIcon 的类,它扩展了 QSystemTrayIcon。我想设置它,所以右键单击打开上下文菜单,左键单击打开一个窗口。 目前默认行为似乎是左键和右键单击打开上下文菜单。 我
我编写了一个小程序来在合成器(xfwm4、dcompmgr、cairo-compmgr)之间切换,以帮助解决 nVidia 可能遇到的视频撕裂问题。它在系统托盘中创建一个具有其操作的图标。问题是当我运
我有一个简单的 PyQt5 应用程序,这只是一个例子,并没有做任何事情: #!/usr/bin/env python # -*- encoding: utf-8 -*- import sys from
我曾尝试在 PySide6 文档中搜索有关 QMenu 和 QSystemTray 类的信息,但无法找到有关从函数向上下文菜单添加操作的任何信息。这是我尝试过的代码: from PySide6.QtW
import sys from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu from PyQt5.QtGui import
我试图在 PyQT5 程序中单击系统托盘图标时打印文本。我尝试将 PyQT5 QSystemTrayIcon 激活信号(单击系统托盘图标时发出)连接到自定义方法,但未调用该方法。这是一个简单的例子:
我正在使用 Pyqt,但是 C++ 代码很好。我正在尝试使用 Linux (Ubuntu 11.10) 中的 QT 框架更改 QSystemTrayIcon 中的菜单项。目前我已尝试重置我最初设置的
即使正在执行activated插槽,菜单仍然没有显示。我通过手动点击托盘图标和模拟点击进行了追踪,其执行逻辑是相同的。 目前我有 class MyClass(QObject): def __in
我似乎找不到任何关于此的信息。但是很多 kde 应用程序使用动画图标。 据我所知,将 gif 设置为 QIcon 是行不通的,因为只会显示第一帧。 最佳答案 我没有尝试过,但每隔几毫秒设置一个新图标可
我正在编写应用程序,托盘类中有奇怪的错误。在我的类里面,我使用 QSystemTrayIcon 之类的 tray = new QSystemTrayIcon(this); tray->setIco
我有一个 QSystemTrayIcon 子类。在里面,我有: quitAction = new QAction(tr("&Quit"), m_parent); connect(quitAction,
我在 Mac 和 Linux 上遇到了 QSystemTrayIcon 类的问题。 我制作了一个创建系统托盘图标的程序,在 Windows 上没有问题,但在 Linux(ubuntu 12)和 Mac
我是一名优秀的程序员,十分优秀!