1

Notepad++ を使用して pyqt4 の例を実行しようとしています。私は以前にこの質問をし ( PyQt4 サンプル コードを実行すると何も起こらない)、最終的に Enthought Canopy とすべての python の残りをアンインストールし、cygwin をインストールしました。ここで、サンプル コードを実行すると、npp のコンソールから次のエラーが表示されます。nppExec コマンド --> C:\cygwin\bin\python2.7.exe -i "$(FULL_CURRENT_PATH)". サンプルコードは一番下に表示されています。

最も近い方法は、cygwin x を起動して (bash シェルから startx と入力)、サンプル ウィンドウが表示されるようにすることですが、ウィンドウを終了することはできません。

私はここで頭がいっぱいになっているように感じます.単純なGUIを作成したいだけで、例を機能させるのに苦労しています. Cygwin の python インストールには従来の IDLE がありませんか?

C:\cygwin\bin\python2.7.exe -i "C:\Users\Brian\Dropbox\Python\PYqt_practice.py"
Process started >>>
cygwin warning:
  MS-DOS style path detected: C:\Users\Brian\Dropbox\Python\PYqt_practice.py
  Preferred POSIX equivalent is: /cygdrive/c/Users/Brian/Dropbox/Python/PYqt_practice.py
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
C:\Users\Brian\Dropbox\Python\PYqt_practice.py: cannot connect to X server 
<<< Process finished. (Exit code 1)
================ READY ================

PyQt4 サンプルコード

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()
4

1 に答える 1

0

Cygwin と一緒にインストールされた PyQT4 と PyQT5 は、同等の Linux パッケージが行うことを直接エミュレートします。つまり、X サーバーを実行することを想定しています。Windows 専用のパッケージは明らかにそうではありません。

基本的に、次の 2 つの選択肢があります。

  1. Cygwin をあきらめて、X サーバーを必要としない Windows 専用のパッケージを使用してください。(Cygwin 環境で Cygwin 以外の python を実行することもできますが、Unicode などで頭痛の種になるでしょう。)
  2. 次のように Cygwin 用の X サーバーをインストールします。

    1. xorg-serverパッケージを取得
    2. 走るstartx

    これにより問題が発生する場合は、次のことを試してください。

    1. xwin -multiwindow代わりに実行startx

    これで、トレイにアイコンが表示されます。

    1. マウスの右ボタンでクリックします
    2. 「アプリケーション」にカーソルを合わせる
    3. をクリックしxtermます。

    おめでとう!xtermX 環境でシェルを実行しました。アプリケーションが動作するかどうかを確認します。

于 2015-05-04T07:45:30.090 に答える