(我编辑了整个问题以使其更清楚)
你好,
我从来没有接触过 Python GUI 库。我知道有很多并且有据可查,但是由于我只需要一个片段,所以我不想深入研究文档以寻找一种方法来做到这一点。如果我要编写一个 GUI 程序,我肯定会这样做,但这只是我的临时脚本所需要的几行。
对于我(GUI 菜鸟)来说,用 Python 编写一段代码后最简单、最直接的方法是什么?更少的台词 = 更多的快乐。
- 按文件名抓取一张 JPEG 图片。
- 显示它的缩略图。
- 在缩略图下方显示一个文本字段,以便用户可以输入标题。
- 等到用户按下他/她键盘上的 ENTER 键。在这种情况下,关闭并返回输入。
- ...或者等到用户点击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)
