2

(質問全体をより明確にするために編集しました)


こんにちは、

私はPythonGUIライブラリとは何の関係もありませんでした。十分に文書化されたものがたくさんあることは知っていますが、必要なスニペットは1つだけなので、それを行う方法を探すために文書を深く掘り下げたくありません。GUIプログラムを書くつもりなら、きっとそうするでしょうが、これは私のアドホックスクリプトの数行としてのみ必要です。

私(GUI noob)がPythonで次のコードを書くための最も簡単で簡単な方法は何でしょうか?線が少ない=幸せが多い。

  1. ファイル名でJPEG画像を取得します。
  2. サムネイルを表示します。
  3. サムネイルの下にテキストフィールドが表示されるので、ユーザーはキャプションを入力できます。
  4. ユーザーがキーボードのENTERキーを押すまで待ち​​ます。その場合は、入力を閉じて返します。
  5. ...またはユーザーがDELETEキーを押すまで待ち​​ます。その場合は、決定に関する情報を閉じて返します(画像を削除するため)。

依存関係またはLinuxのみのソリューションは問題ありません。これをXubuntuマシンで実行する必要があります。コードスニペットをお願いします。Python GUIの分野に精通している人にとって、これは5分の問題だと思います。たくさんのライブラリドキュメントを勉強する必要があります。ありがとうございました!

4

2 に答える 2

1

以下は、多かれ少なかれ仕様に適合する最小限の python スクリプトです。

python2 および pyqt4 パッケージをインストールする必要があり、python3 では動作しません (ただし、必要に応じて簡単に変更できます)。

ユーザーが有効なキャプションを入力して Enter キーを押すと、スクリプトはステータス コード 0 を返し、キャプションを stdout に出力します。それ以外の場合、ユーザーが無効なキャプション (空または空白のみ) を入力した場合、または何もせずに単にダイアログを閉じた場合、スクリプトはステータス コード 1 を返し、何も出力しません。

bash の使用例:

$ CAPTION=$(python imgviewer.py image.jpg)
$ [ $? -eq 0 ] && echo $CAPTION 

imgviewer.py :

import sys, os
from PyQt4 import QtGui, QtCore

class Dialog(QtGui.QDialog):
    def __init__(self, path):
        QtGui.QDialog.__init__(self)
        self.viewer = QtGui.QLabel(self)
        self.viewer.setMinimumSize(QtCore.QSize(400, 400))
        self.viewer.setScaledContents(True)
        self.viewer.setPixmap(QtGui.QPixmap(path))
        self.editor = QtGui.QLineEdit(self)
        self.editor.returnPressed.connect(self.handleReturnPressed)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.viewer)
        layout.addWidget(self.editor)

    def handleReturnPressed(self):
        if self.editor.text().simplified().isEmpty():
            self.reject()
        else:
            self.accept()

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    args = app.arguments()[1:]
    if len(args) == 1:
        dialog = Dialog(args[0])
        if dialog.exec_() == QtGui.QDialog.Accepted:
            print dialog.editor.text().simplified().toLocal8Bit().data()
            sys.exit(0)
    else:
        print 'ERROR: wrong number of arguments'
    sys.exit(1)
于 2012-11-26T22:06:34.510 に答える
0

Python 用の優れた GUI ライブラリがいくつかあります。Python に組み込まれている「標準」ライブラリはtkinterhttp://wiki.python.org/moin/TkInterですhttp://www.wxpython.org/wxPythonのほうがはるかに強力で簡単だと言う人もいます。

wxPython から始めることができると思います。wxPython には、掘り下げることができる多くのチュートリアルと例があります (DEMO を実行するだけです)。

「ImageBrowser」と呼ばれる例があり、これは非常に良い出発点になる可能性があります。

異なるアプリ間の通信については、「パイプ」と「リダイレクト」を使って通信することができます。しかし、すべてが python で書かれている場合、これは間違った方法だと思います。python スクリプト内で画像フォームを表示し、結果を内部的に取得できます。

于 2012-11-25T10:40:33.303 に答える