如何使用gio和python3获取文件图标

Newtron马拉雅拉姆语

我想使用gtk获取对应文件的默认图标。

我在python3中尝试了此方法,但给了我一个错误

from gi.repository import Gio as gio
from gi.repository import Gtk
import os

def get_icon_filename(filename,size):
    #final_filename = "default_icon.png"
    final_filename = ""
    if os.path.isfile(filename):
        # Get the icon name
        file = gio.File(filename)
        file_info = file.query_info('standard::icon')
        file_icon = file_info.get_icon().get_names()[0]
        # Get the icon file path
        icon_theme = gtk.icon_theme_get_default()
        icon_filename = icon_theme.lookup_icon(file_icon, size, 0)
        if icon_filename != None:
            final_filename = icon_filename.get_filename()

    return final_filename


print(get_icon_filename("/home/newtron/Desktop/Gkite_Logo.png",64))

  File "geticon", line 11, in get_icon_filename
    file = gio.File(filename)
TypeError: GInterface.__init__() takes exactly 0 arguments (1 given)

我以前没有gio模块的经验。我的代码有什么问题吗?如果没有,该错误的解决方法是什么。

Newtron马拉雅拉姆语

正如我的朋友@stovfl所说,这是因为我将旧的Gi和Gtk代码用于python2。但是在新版本的gio.Fileattribute中,具有更多子属性(类),这些子属性指定了给定的文件属性类型,例如

new_for_path我在代码中使用了该类并对其进行了处理。实际上,我是从另一个StackOverflow讨论中获得此代码的。

当我再次检查它有python3代码

#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gio as gio
from gi.repository import Gtk as gtk
import os

def get_icon_filename(filename,size):
    #final_filename = "default_icon.png"
    final_filename = ""
    if os.path.isfile(filename):
        # Get the icon name
        file = gio.File.new_for_path(filename)
        file_info = file.query_info('standard::icon',0)
        file_icon = file_info.get_icon().get_names()[0]
        # Get the icon file path
        icon_theme = gtk.IconTheme.get_default()
        icon_filename = icon_theme.lookup_icon(file_icon, size, 0)
        if icon_filename != None:
            final_filename = icon_filename.get_filename()

    return final_filename


print(get_icon_filename("/home/newtron/Desktop/counter.desktop",48))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Seleniumv3和Python3单击X图标以关闭iframe

如何通过selenium和python3在firefox下载中获取文件的下载链接

使用python3从样式为列表和元组的txt文件中获取信息

如何使用os.listdir在Python3中获取文件信息?

使用python3从json文件中获取数据。如何从数据池打印特定部分?

使用Python3和BeautifulSoup解析xml文件

如何在Python3中从文本文件获取和创建自定义变量?

如何使用Java获取文件的图标?

如何使用 Python3 创建最大兼容的 zip 文件?

如何使用Python3读写INI文件?

如何使用Python3读写INI文件?

python3使用谷歌应用引擎接收电子邮件,而不是如何正确获取日期和大小

如何在python3中使用graphics.py获取和设置像素的颜色值

无法获取主机名和 IP 并输出到文件 Python3

(Python3)如何获取python中远程文件的时间戳(即Web链接)?

使用python3和boto3获取最新的AWS Volume快照ID

在python3中,如果输入是dir,如何使for循环获取所有文件,如果输入是文件,则如何选择文件

如何在python3的int和float中获取用户输入

如何使用python请求(获取)和读取xml文件?

使用Python3解析json文件

使用Python3和jinja2从嵌套Json响应中获取信息

无法获取pyperclip以在python3上使用复制和粘贴模块

使用Pandas和Python3在特定时间获取列的值

使用 Python3 和 opencv 从蒙版图像中获取中心蒙版

python - 如何在Python3中使用键和值数组作为二维列表从用户那里获取字典?

使用SHFILEINFO获取文件图标

如何从python3中的json文件中检索所有“名称”和“ id”

如何从html和或python3向js文件添加/添加数据

如何将带有文件和参数的python3 post请求转换为curl