我的PyQt应用程序在空闲状态下运行良好但在尝试从cmd

时间:2016-10-08 22:19:31

标签: python cmd pyqt pyqt4 python-3.4

所以我正在学习PyQt开发,并将其输入到IDLE中的新文件中:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def window():
    app = QApplication(sys.argv)
    win = QDialog()
    b1 = QPushButton(win)
    b1.setText("Button1")
    b1.move(50,20)
    b1.clicked.connect(b1_clicked)

    b2=QPushButton(win)
    b2.setText("Button2")
    b2.move(50,50)
    QObject.connect(b2,SIGNAL("clicked()"),b2_clicked)

    win.setGeometry(100,100,200,100)
    win.setWindowTitle("PyQt")
    win.show()
    sys.exit(app.exec_())

def b1_clicked():
    print("Button 1 clicked")

def b2_clicked():
    print("Button 2 clicked")


if __name__ == '__main__':
    window()

应用程序执行应该执行的操作,即在IDLE中运行时打开一个带有两个按钮的对话框。当我尝试从cmd运行相同的程序时,我收到此消息:

追踪(最近一次通话):   文件“C:\ Python34 \ Basic2buttonapp.py”,第2行,in     来自PyQt4.QtCore import * ImportError:没有名为'PyQt4'的模块

我已经尝试在cmd中键入python.exe,看看我是否在cmd中运行了正确版本的python,但这似乎不是问题所在。我知道它与python 3.4和模块之间的通信有关,但是对我来说这似乎很奇怪只有在尝试从cmd运行它时才会发生。

如果有人有解决方案,我会非常感激。

1 个答案:

答案 0 :(得分:0)

这是因为从命令行运行时,您使用的是不同版本的Python与IDLE中的版本(使用不同的已安装软件包)。您可以通过从命令行运行以下命令来查找正在使用的Python:

python -c "import sys;print(sys.executable)"

......或在IDLE中:

import sys
print(sys.executable)

如果这两者不匹配,那就有问题了。要修复它,您需要更新PATH变量,将IDLE引用的Python可执行文件的父文件夹放在前面。您可以在Windows here上获取有关如何执行此操作的说明。