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



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


你好,

我从未接触过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内置的"标准"库是tkinter:http://wiki.python.org/moin/TkInter.有人说wxPython更强大、更直接:http://www.wxpython.org/.

我认为你可以从wxPython开始,他们有很多教程和例子你可以深入研究(只需运行DEMO)。

他们有一个名为"ImageBrowser"的例子,这可能是一个很好的起点。

关于不同应用程序之间的通信,您可以使用"管道"one_answers"重定向"进行通信。但是,如果所有内容都是用python编写的,我认为这是错误的做法,您可以在python脚本中显示图像形式,并在内部获得结果。

最新更新