簡體   English   中英

如何從命令行在Python中顯示圖像並提示輸入短字符串

[英]How to display an image and prompt for a short string in Python from command line

(我對整個問題進行了編輯以使其更加清晰)


你好,

我從未與Python GUI庫有任何關系。 我知道這里有很多文檔,但是由於我只需要一個摘要,因此我不希望深入文檔中尋找方法來做到這一點。 如果要編寫一個GUI程序,我肯定會這樣做,但這只是我的臨時腳本的幾行內容。

對於我(GUI noob)來說,用下面的代碼在Python中編寫最簡單,最直接的方法是什么? 更少的台詞=更多的幸福。

  1. 按文件名抓取JPEG圖片。
  2. 顯示縮略圖。
  3. 在縮略圖下方顯示一個文本字段,以便用戶可以輸入標題。
  4. 等到用戶按鍵盤上的ENTER鍵。 在這種情況下,請關閉並返回輸入。
  5. ...或等到用戶按下DELETE鍵。 在這種情況下,請關閉並返回有關決策的信息(刪除圖片)。

依賴項或僅Linux解決方案都可以。 我需要在Xubuntu機器上運行它。 請提供任何代碼段? 我相信這對於Python GUI領域的技術人員來說只需5分鍾。 我需要研究圖書館文檔的負載。 謝謝!

下面是一個或多或少符合規范的最小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)

有幾個不錯的Python GUI庫。 python內置的“標准”庫是tkinterhttp : //wiki.python.org/moin/TkInter 有人說wxPython更加強大和直接: http : //www.wxpython.org/

我認為您可以從wxPython開始,它們有許多您可以深入了解的教程和示例(只需運行DEMO)。

他們有一個名為“ ImageBrowser”的示例,這可能是一個很好的起點。

關於不同應用之間的通信,可以使用“管道”和“重定向”進行通信。 但是,如果一切都是用python編寫的,我認為這是錯誤的方法,您可以在python腳本中顯示圖像形式並在內部獲取結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM