2011-05-29 43 views
2

我已經制作了一個程序,其中有一個工具欄,在Linux中有幾個動作。工具欄及其操作在Linux操作系統上完美工作,但是當我在Windows計算機上運行代碼時,這些操作不起作用。一切看起來都與Linux相同(是的,我在Windows機器上安裝了PyQt4),甚至是工具欄,但是當我單擊工具欄上的某個項目時,它只是不執行給定的處理程序。我試着用工具欄做了一個基本的PyQt4程序來測試這個bug是否是因爲我的程序,但結果是一樣的。這是基本的示例程序不起作用。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旗艦版32位(不能在XP工作,要麼)

Python版本:Python 2.7版

PyQt4的版本:PyQt的-Py2.7 86 GPL-4.8.4 -1

我希望有人能幫助我。我感謝大家的關注和幫助!

有一個愉快的一天!

回答

3

這是奇怪的是,它在Linux上,因爲我只能得到改變

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

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

它在Windows上工作QAction class reference只列出changed()hovered()toggled()triggered()爲有效的信號。不幸的是,我沒有一個Linux盒子可以方便地進一步測試。

+0

謝謝你的回覆!這解決了我的問題。不過,我可以向你保證,至少在我的Linux機器上(Ubuntu 10.10),該程序即使以激活()作爲信號也能工作。我也覺得很奇怪。那麼,再次感謝您的回覆!祝你今天愉快! – Calin 2011-05-29 17:41:57

+0

我碰到了[this thread](http://www.qtcentre.org/threads/5862-What-is-the-difference-between-the-activated%28%29-and-triggered%28%29-SIGNALs - 對於-A-的QAction)。顯然,'activated()'在Qt3中被使用,並且爲了兼容性而在一些版本中仍然存在。 – 2011-05-29 22:12:51

相關問題