从 pygtk 程序启动默认图像查看器

发布于 2024-09-12 23:48:17 字数 105 浏览 4 评论 0原文

我正在 Ubuntu 中编写一个 PyGTK GUI 应用程序来浏览一些图像,并且我想在双击时在默认图像查看器应用程序中打开图像(就像在 Nautilus 中打开它一样)。
我该怎么做呢?

I'm writing a PyGTK GUI application in Ubuntu to browse some images, and I'd like to open an image in the default image viewer application when it is double-clicked (like when it is opened in Nautilus).
How can I do it?

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

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

发布评论

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

评论(3

╭ゆ眷念 2024-09-19 23:48:17

我不知道具体使用 PyGTK,但是: xdg-open 打开文件的默认应用程序,因此运行类似的内容应该可以:

import os
os.system('xdg-open ./img.jpg')

编辑: 我建议使用subprocess 模块如注释中所示。我还不确定如何使用它,所以我只是在示例中使用了 os.system 来显示 xdg-open。

I don't know specifically using PyGTK but: xdg-open opens the default app for a file so running something like this should work:

import os
os.system('xdg-open ./img.jpg')

EDIT: I'd suggest using the subprocess module as in the comments. I'm not sure exactly how to use it yet so I just used os.system in the example to show xdg-open.

段念尘 2024-09-19 23:48:17

在 GNU/Linux 中使用 xdg-open,在 Mac 中使用 open,在 Windows 中使用 start。另外,请使用 subprocess,否则,在调用外部应用程序时,您的应用程序可能会被阻止。

这是我的实现,希望它有所帮助: http://goo.gl/xebnV

import sys
import subprocess
import webbrowser

def default_open(something_to_open):
    """
    Open given file with default user program.
    """
    # Check if URL
    if something_to_open.startswith('http') or something_to_open.endswith('.html'):
        webbrowser.open(something_to_open)
        return 0

    ret_code = 0

    if sys.platform.startswith('linux'):
        ret_code = subprocess.call(['xdg-open', something_to_open])

    elif sys.platform.startswith('darwin'):
        ret_code = subprocess.call(['open', something_to_open])

    elif sys.platform.startswith('win'):
        ret_code = subprocess.call(['start', something_to_open], shell=True)

    return ret_code

In GNU/Linux use xdg-open, in Mac use open, in Windows use start. Also, use subprocess, if not you risk to block your application when you call the external app.

This is my implementation, hope it helps: http://goo.gl/xebnV

import sys
import subprocess
import webbrowser

def default_open(something_to_open):
    """
    Open given file with default user program.
    """
    # Check if URL
    if something_to_open.startswith('http') or something_to_open.endswith('.html'):
        webbrowser.open(something_to_open)
        return 0

    ret_code = 0

    if sys.platform.startswith('linux'):
        ret_code = subprocess.call(['xdg-open', something_to_open])

    elif sys.platform.startswith('darwin'):
        ret_code = subprocess.call(['open', something_to_open])

    elif sys.platform.startswith('win'):
        ret_code = subprocess.call(['start', something_to_open], shell=True)

    return ret_code
灯下孤影 2024-09-19 23:48:17

GTK (>= 2.14) 有 gtk_show_uri

gtk.show_uri(screen, uri, timestamp)

用法示例:

gtk.show_uri(None, "file:///etc/passwd", gtk.gdk.CURRENT_TIME)

相关

GTK (>= 2.14) has gtk_show_uri:

gtk.show_uri(screen, uri, timestamp)

Example usage:

gtk.show_uri(None, "file:///etc/passwd", gtk.gdk.CURRENT_TIME)

Related

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