PyQt4 Windows - 工具栏操作不起作用。我该如何修复它们?

Posted

技术标签:

【中文标题】PyQt4 Windows - 工具栏操作不起作用。我该如何修复它们?【英文标题】:PyQt4 Windows - Toolbar Actions don't work. How can I fix them? 【发布时间】:2011-05-29 15:57:46 【问题描述】:

我在 Linux 中制作了一个带有工具栏的程序,上面有一些操作。工具栏及其操作在 Linux 操作系统上完美运行,但是当我在 Windows 机器上运行代码时,这些操作不起作用。一切看起来都与 Linux 上的一样(是的,我在 Windows 机器上安装了 PyQt4),甚至工具栏,但是当我单击工具栏上的一个项目时,它只是不执行给定的处理程序。我尝试并制作了一个带有工具栏的基本 PyQt4 程序,只是为了测试这个错误是否是因为我的程序,但结果是一样的。这是不起作用的基本示例程序。

from PyQt4 import QtGui, QtCore
import sys

def aTest(obj = None):
    print "If this appears, the action works."

app = QtGui.QApplication(sys.argv)
w = QtGui.QMainWindow()
toolBar = w.addToolBar("toolbar")

action = QtGui.QAction(QtGui.QIcon("path to icon here"), "testAction", w)
w.connect(action, QtCore.SIGNAL("activated()"), aTest)

toolBar.addAction(action)

w.show()

app.exec_()

此代码在 Linux 上运行没有问题,但在 Windows 上,这些操作在激活时没有反应。忽略代码中的错别字。

操作系统:Windows 7 Ultimate 32 位(也不适用于 XP)

Python 版本:Python 2.7

PyQt4 版本:PyQt-Py2.7-x86-gpl-4.8.4-1

我希望有人可以帮助我。感谢大家的关心和帮助!

祝你有美好的一天!

【问题讨论】:

【参考方案1】:

奇怪的是,它在 Linux 上工作,因为我只能通过改变让它在 Windows 上工作

w.connect(action, QtCore.SIGNAL("activated()"), aTest)

w.connect(action, QtCore.SIGNAL("triggered()"), aTest)

QAction class reference 仅将changed()hovered()toggled()triggered() 列为有效信号。不幸的是,我没有方便的 Linux 机器来进一步测试。

【讨论】:

感谢您的回复!这解决了我的问题。但是,我可以向您保证,至少在我的 Linux 机器上(Ubuntu 10.10),即使使用 activate() 作为信号,该程序也能正常工作。我也觉得很奇怪。好的,再次感谢您的回复!祝你有美好的一天! 我遇到了this thread。显然,activated() 曾在 Qt3 中使用,并且仍然存在于某些版本中以实现兼容性。

以上是关于PyQt4 Windows - 工具栏操作不起作用。我该如何修复它们?的主要内容,如果未能解决你的问题,请参考以下文章

睡眠在pyqt4上不起作用

PyQt4 应用程序按钮不起作用

PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用

PyQt4 QTabWidget TAB CHANGE....currentChange(int) 不起作用

PyQt4程序不起作用

使用 Pyqt4 和 QSound 播放声音