显示包含路径的树视图列的文件选择对话框

发布于 2024-10-14 01:41:41 字数 1380 浏览 4 评论 0原文

我试图显示 GtkFileChooserDialogGtkTreeView 包含路径的列已被编辑。

我想出了两种可能的方法来实现这一点:

  1. 挂钩 GtkCellRendererText 显示路径。然而,这仍然需要在单元格内完成“编辑”。我无法显示对话框,然后 取消通常的编辑过程。
  2. 添加“...”按钮 进入专栏。捕捉“点击”按钮上的信号,并使用它来显示对话框。但是,只能添加 GtkCellRenderer一个专栏,所以我不知道如何实现这一点。

我应该如何进行?在 GtkTreeView 中编辑路径的标准方法是什么?

I'm trying to show a GtkFileChooserDialog when a GtkTreeView column that contains paths is edited.

I've come up with 2 possible ways to implement this:

  1. Hook the "editing-started" signal on the GtkCellRendererText that shows the path. However this still requires that the "editing" be done inside the cell. I can't show a dialog and then cancel the usual editing process.
  2. Add a "..." button into the column. Catch "clicked" signals on the button, and use this to show the dialog. However only GtkCellRenderers can be added to a column, so I have no idea how to implement this.

How should I proceed? What's the standard method to edit paths in a GtkTreeView?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生一个溪 2024-10-21 01:41:41

您可以重写 CellRendererText 的 do_start_editing 方法来完全改变其行为:

class CellRendererFile(gtk.CellRendererText):
    def __init__(self):
        gtk.CellRendererText.__init__(self)
        self.props.editable = True

    def do_start_editing(self, event, widget, path, background_area, cell_area, flags):
        # TODO: Show dialog.
        self.emit('edited', path, "TODO: Dialog output")

gobject.type_register(CellRendererFile)

然后正常使用,连接到“edited”信号。

You can override CellRendererText's do_start_editing method to completely change its behaviour:

class CellRendererFile(gtk.CellRendererText):
    def __init__(self):
        gtk.CellRendererText.__init__(self)
        self.props.editable = True

    def do_start_editing(self, event, widget, path, background_area, cell_area, flags):
        # TODO: Show dialog.
        self.emit('edited', path, "TODO: Dialog output")

gobject.type_register(CellRendererFile)

And then just use normally, connect to the "edited" signal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文