如果 YAD 是 Zenity 的一个分支,为什么没有 --imagelist?

If YAD is a fork of Zenity why is there no --imagelist?

Zenity 在我的许多 bash 项目中使用,但看看 YAD 的高级功能,有很多切换的理由。不幸的是,经过一些测试后,我发现列表类型对话框没有 --imagelist 选项。这是一个主要问题,因为我的大多数项目都使用图像列表。

Zenity 版本 3.28.1 上的以下示例 运行s

#!/bin/bash

table=(~/image.png " " "Title1" " " "description1" "output1" ~/image.png " " "Title2" " " "description2" "output2" ~/image.png " " "Title3" " " "description3" "output3")


zenity --list --title="page title" --text="some random text" --imagelist --ok-label=Open --cancel-label=Home --print-column=6 --hide-column=6 --separator=' ' --width=600 --height=400 \
   --column="Cover image"  \
   --column="     "  \
   --column="Name"  \
   --column="     "  \
   --column="details"  \
   --column="Folder"  \
   "${table[@]}"

对话框应如下所示:

在此示例中,${table[@]} 是一个数组,其中包含每行的所有数据,包括第 1 列中图像的文件路径。有没有办法在YAD?

我安装了 YAD 并查看了终端中提供的所有帮助页面,也尝试了 运行 类似的图像列表示例,但它似乎不受支持(语法大部分相同,因为 YAD 是禅度)

使用 yad,列可以具有与其相关联的类型。在您的情况下,您希望第一列使用 :IMG 类型,其他两列可以保留为纯文本。

table=(
   ~/image.png  ""  "Title1"  ""  "description1"  "output1"
   ~/image.png  ""  "Title2"  ""  "description2"  "output2"
   ~/image.png  ""  "Title3"  ""  "description3"  "output3"
)

yad                             \
   --list                       \
   --title="page title"         \
   --text="some random text"    \
   --imagelist                  \
   --print-column=6             \
   --hide-column=6              \
   --separator=' '              \
   --width=600                  \
   --height=400                 \
   --column="Cover image:IMG"   \
   --column=" "                 \
   --column="Name"              \
   --column="     "             \
   --column="details"           \
   --column="Folder"            \
   --button="Home":1            \
   --button="Open":20           \
   --response=20                \
   "${table[@]}"

The output, missing your images

如果您在列表项上按 Enter 或单击“打开”,以及输出“output1”或“output2”等,这会将退出代码设置为 20

也就是说,我一直遇到退出代码或输出文本显示不正确的问题。上面的示例对我来说工作正常,但如果我将 Open 退出代码更改为“25”而不是“20”,它就会停止工作。不知道为什么它的行为不一致。