Skip to main content
 首页 » 编程设计

python之如何从命令行在 Python 中显示图像并提示输入短字符串

2025年05月04日21zhoujg

(我编辑了整个问题以使其更清楚)


你好,

我从来没有接触过 Python GUI 库。我知道有很多并且有据可查,但是由于我只需要一个片段,所以我不想深入研究文档以寻找一种方法来做到这一点。如果我要编写一个 GUI 程序,我肯定会这样做,但这只是我的临时脚本所需要的几行。

对于我(GUI 菜鸟)来说,用 Python 编写一段代码后最简单、最直接的方法是什么?更少的台词 = 更多的快乐。

  1. 按文件名抓取一张 JPEG 图片。
  2. 显示它的缩略图。
  3. 在缩略图下方显示一个文本字段,以便用户可以输入标题。
  4. 等到用户按下他/她键盘上的 ENTER 键。在这种情况下,关闭并返回输入。
  5. ...或者等到用户点击DELETE 键。在这种情况下,关闭并返回有关决定(删除图片)的信息。

依赖项或仅限 Linux 的解决方案都可以。我需要在 Xubuntu 机器上运行它。有代码片段吗?我相信对于 Python GUI 领域的技术人员来说,这只是 5 分钟的事情。我需要研究大量的图书馆文档。谢谢!

请您参考如下方法:

下面是一个或多或少符合规范的最小 python 脚本。

它需要安装 python2 和 pyqt4 包,并且不能与 python3 一起使用(尽管如果需要,它可以很容易地进行调整)。

如果用户输入有效的标题并按下回车键,脚本将返回状态码 0 并将标题打印到标准输出;否则,如果用户输入了无效的标题(仅限空白或空白),或者只是关闭对话框而不做任何事情,脚本将返回状态代码 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)