PyQt4 Windows - 工具栏操作无效,如何修复?
我写了一个程序,里面有一个工具栏,上面有几个操作,运行在Linux系统上时一切都很好。但是当我在Windows机器上运行这段代码时,工具栏上的操作就不管用了。虽然在Windows上看起来和Linux上一样(我在Windows上也安装了PyQt4),甚至工具栏的样子也一样,但当我点击工具栏上的某个项目时,它就是不执行相应的操作。我还特意做了一个简单的PyQt4程序,只有工具栏,想测试一下是不是我自己的程序有问题,但结果还是一样。下面是那个基本的示例程序,它在Windows上不工作。
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 个回答
3
在Linux上能正常工作真是奇怪,因为我在Windows上只能通过把
w.connect(action, QtCore.SIGNAL("activated()"), aTest)
改成
w.connect(action, QtCore.SIGNAL("triggered()"), aTest)
来让它运行。QAction类的参考文档里只列出了changed()
、hovered()
、toggled()
和triggered()
这几个有效的信号。可惜我手头没有Linux的电脑,没法进一步测试。