PyQt4 Windows - 工具栏操作无效,如何修复?

2 投票
1 回答
1386 浏览
提问于 2025-04-16 18:34

我写了一个程序,里面有一个工具栏,上面有几个操作,运行在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的电脑,没法进一步测试。

撰写回答