【问题标题】:Nothing happens when running PyQt4 example code运行 PyQt4 示例代码时没有任何反应
【发布时间】:2013-05-05 02:49:16
【问题描述】:

我正在尝试使用 PyQt4 运行一些示例代码。我正在尝试从 Notepad++ 以及 Enthought Canopy 环境中运行它。示例代码如下所示。在 npp 中,我使用插件 nppExec 和 python -i "$(FULL_CURRENT_PATH)" 作为命令。 (我也试过没有交互式 -i)

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

当我从 npp 中运行它时,内部控制台似乎冻结(没有错误)并且可以使用 ctrl-c 恢复

当我从 Canopy 中运行它时,我收到以下错误消息

%run "c:\users\brian\appdata\local\temp\tmpfe9mmh.py"
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
C:\Users\Brian\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.0.1160.win-x86\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
    174             else:
    175                 filename = fname
--> 176             exec compile(scripttext, filename, 'exec') in glob, loc
    177     else:
    178         def execfile(fname, *where):

c:\users\brian\appdata\local\temp\tmpfe9mmh.py in <module>()
     20 
     21 import sys
---> 22 from PyQt4 import QtGui
     23 
     24 

C:\Users\Brian\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.0.1160.win-x86\lib\site-packages\IPython\external\qt_loaders.pyc in load_module(self, mod_name)
     43     Importing %s disabled by IPython, which has
     44     already imported an Incompatible QT Binding: %s
---> 45     """ % (mod_name, loaded_api()))
     46 
     47 ID = ImportDenier()

ImportError: 
    Importing PyQt4 disabled by IPython, which has
    already imported an Incompatible QT Binding: pyside

我很困惑为什么 Canopy 将其项目放在一个看似奇怪的地方 (C:\Users\Brian\AppData\Local\Enthought\Canopy32),而不是简单的 C:/python27

我正在运行 python 2.7 32 位,Canopy 版本:1.0.0.1160 32 位,Win7 64 位

【问题讨论】:

  • 您上面的代码没有问题。

标签: python python-2.7 pyqt4


【解决方案1】:

当你的机器上运行 python 时,看起来 pyside(Qt 的另一种 python 绑定)以某种方式自动导入。 import both pyside 和 pyqt 会导致某种冲突,从而导致您的问题。

我想知道.. 你的路径中是否有一个名为 sys.py 的模块正在使用 pyside?您正在导入 sys ,它是一个内置模块,但如果您的路径中有一个名为 sys.py 的文件,则会改为导入该文件。如果是这种情况,那么您可以运行脚本:

import sys

print sys.__file__

查找文件的位置。如果导入的 sys 模块实际上是内置模块,则 sys 不会有__file__ 属性,会引发异常。

顺便说一句,我在我的机器上尝试了你的示例代码,它运行没有任何问题。

【讨论】:

    【解决方案2】:

    在 NppExec 中,使用命令

    CMD /C python -u "$(FULL_CURRENT_PATH)"
    

    而不是

    python "$(FULL_CURRENT_PATH)"
    

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多