使用Ubuntu .desktop文件从python脚本显示Tkinter窗口

时间:2016-12-15 16:59:44

标签: python ubuntu tkinter

我使用Tkinter编写了一个Python脚本来显示一个(单个)窗口(脚本工作正常)。现在,我编写了一个.desktop文件,以便能够从Ubuntu(16.04)破折号启动脚本:

[Desktop Entry]
Name=UNIX Time Converter
Exec=/home/tiuri/.local/share/applications/UnixTimeConverter.py
Type=Application
Terminal=False
Icon=/home/tiuri/.local/share/applications/unixtimeconverter.png

但这只是部分工作:我在短划线中有一个应用程序,其中包含正确的图标和正确的名称。单击它时,启动器中会出现两个图标:应用程序图标(在.desktop中显示)闪烁十秒然后消失,而第二个图标连接到Tkinter窗口并在窗口打开时保持不变。但是,我想只有一个启动器图标,图像在.desktop文件中定义并连接到Tkinter窗口。

Python脚本重现行为的最小示例是:

#!/usr/bin/env python

from Tkinter import Tk, Label

def main():
    master = Tk()
    Label(master, text='Minimal example').pack()
    master.mainloop()

if __name__ == '__main__':
   main()

我想Ubuntu不会将Tkinter窗口识别为刚刚执行的命令的实例,但我不知道这是Python还是Ubuntu问题。在这里和Google上搜索并没有产生解决方案,但也许你有一个想法?提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在StartupWMClass文件中添加.desktop属性,该属性会从应用程序中识别出来 运行以下命令并单击应用程序,它将输出窗口类

xprop | grep WM_CLASS | awk '{print $4}'

并把它像

StartupWMClass=<output of above command>

在您的.desktop文件中