问题描述
|
我制作了一个带有工具栏的程序,在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-bit(在XP上也不起作用)
Python版本:Python 2.7
PyQt4版本:PyQt-Py2.7-x86-gpl-4.8.4-1
我希望在那里有人可以帮助我。我感谢大家的关注和帮助!
祝你今天愉快!
解决方法
它在Linux中工作很奇怪,因为我只能通过更改使其在Windows上工作
w.connect(action,QtCore.SIGNAL(\"activated()\"),aTest)
至
w.connect(action,QtCore.SIGNAL(\"triggered()\"),aTest)
QAction类参考仅列出changed()
,hovered()
,toggled()
和triggered()
作为有效信号。不幸的是,我没有方便使用Linux的盒子来进一步测试。