【问题标题】:Customizing GtkFileChooser自定义 GtkFileChooser
【发布时间】:2011-07-08 14:06:00
【问题描述】:

GTK+ 菜鸟问题在这里:

是否可以自定义 GtkFileChooserButton 或 GtkFileChooserDialog 以删除“Places”部分(左侧)和顶部的“Location”输入框?

我实际上要做的是允许用户仅从特定文件夹(我使用 gtk_file_chooser_set_current_folder 设置)中选择文件,并禁用导航到文件系统上的其他位置。

这是标准文件选择器对话框:

这是我需要的:

【问题讨论】:

    标签: gtk


    【解决方案1】:

    标准文件选择器对话框似乎无法做到这一点。例如,here 是一个文档,讨论了为什么这样的东西会有用以及如何实现它,但这个想法从未实现。

    您可以做的也许是编写自己的对话框,该对话框实现了GtkFileChooser 接口,基于GtkFileChooserDialog 代码,但隐藏了地址栏和书签列表。

    【讨论】:

      【解决方案2】:

      您可以通过 gtkparasite 找出各个子节点的位置,然后使用 get_children 访问它们。

      确保使用 .show() 而不是 .run() 来检查带有 gtkparasite 的对话框。如果您使用 .run() 对话框以模式模式显示,因此您无法检查它。

      例如,我使用以下语句隐藏路径和位置小部件:

      dialog = gtk.FileChooserDialog("Open***", None, gtk.FILE_CHOOSER_ACTION_OPEN,
                  (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN, gtk.RESPONSE_OK))
      dialog.set_show_hidden(True)
      dialog.set_default_response(gtk.RESPONSE_OK)       
      vbox = dialog.get_children()[0].get_children()[0].get_children( [0].get_children()[0]
      vbox.get_children()[0].hide()
      vbox.get_children()[2].get_children()[0].hide()
      

      当然,这不是一个公开的 API,因此它总是可以脱离底层更改。

      希望它有意义......

      试图发布图片,但我是新用户....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多