Как добавить значок запуска для скрипта python?

Я пытаюсь добавить значок запуска для пользовательского скрипта Python, отображающего окно Tkinter (расположение скрипта: /home/hakon/my-tkapp.py):

#! /usr/bin/env python3 import tkinter as tk root = tk.Tk(className='MyTkApp') label = tk.Label(root, text="Hello World") label.pack() root.mainloop()

Сценарий является исполняемым. Я использую pyenv, поэтому, если я запустил следующее из gnome-terminal:

$ which python3 /home/hakon/.pyenv/shims/python3

Я создал файл рабочего стола (местоположение файла: ~/.local/share/applications/my-tk-app.desktop):

[Desktop Entry] Type=Application Terminal=false Name=My Tk Application Exec=/home/hakon/my-tkapp.py Icon=/home/hakon/icons/my-tk-app-icon.png StartupWMClass=MyTkApp

Для значка я просто (для целей тестирования) скопировал один из стандартных значков:

cp /usr/share/icons/hicolor/48/apps/apport.png /home/hakon/icons/my-tk-app-icon.png

Запуск команды desktop-file-validate в файле рабочего стола не дает выхода, поэтому файл рабочего стола должно быть в порядке.

Однако, когда я запускаю скрипт python из терминала:

~/my-tkapp.py

Я все еще получаю общий знак вопросительного знака в панели запуска.

Что я здесь не вижу?

4
задан 27 June 2017 в 12:19

3 ответа

Из-за того, что ваш вопрос хорошо документирован, мы можем найти проблему:)

В вашем приложении вы устанавливаете:
root = tk.Tk(className='MyTkApp')
Теперь, если вы открываете терминал, введите:
$ xprop WM_CLASS
и затем щелкните по окну вашего приложения, оно показывает:
WM_CLASS(STRING) = "myTkApp", "Mytkapp"

Это совсем не то же самое, что и выбранный вами класс окна; столицы отличаются. Единственный вывод состоит в том, что по какой-то причине выбранный оконный класс (столичный формат) не принимается диспетчером окон.

Когда я сменил вашу пусковую установку на соответствие myTkApp:

[ f4]

он работает нормально (для удобства я установил значок firefox, так как у меня нет вашего значка):

[Desktop Entry]
Type=Application
Terminal=false
Name=My Tk Application
Exec=/home/jacob/Bureaublad/testapp.py
Icon=firefox
StartupWMClass=myTkApp

Результат:

[ ! d13]

3
ответ дан 22 May 2018 в 21:07
  • 1
    Привет, Джейкоб, теперь у меня есть еще одна проблема, которая, как мне кажется, связана с tkinter, см. этот вопрос – Håkon Hægland 28 June 2017 в 10:04

Из-за того, что ваш вопрос хорошо документирован, мы можем найти проблему:)

В вашем приложении вы устанавливаете: root = tk.Tk(className='MyTkApp') Теперь, если вы открываете терминал, введите: $ xprop WM_CLASS и затем щелкните по окну вашего приложения, оно показывает: WM_CLASS(STRING) = "myTkApp", "Mytkapp"

Это совсем не то же самое, что и выбранный вами класс окна; столицы отличаются. Единственный вывод состоит в том, что по какой-то причине выбранный оконный класс (столичный формат) не принимается диспетчером окон.

Когда я сменил вашу пусковую установку на соответствие myTkApp:

StartupWMClass=myTkApp

он работает нормально (для удобства я установил значок firefox, так как у меня нет вашего значка):

[Desktop Entry] Type=Application Terminal=false Name=My Tk Application Exec=/home/jacob/Bureaublad/testapp.py Icon=firefox StartupWMClass=myTkApp

Результат:

[ ! d13]

3
ответ дан 18 July 2018 в 11:02

Из-за того, что ваш вопрос хорошо документирован, мы можем найти проблему:)

В вашем приложении вы устанавливаете: root = tk.Tk(className='MyTkApp') Теперь, если вы открываете терминал, введите: $ xprop WM_CLASS и затем щелкните по окну вашего приложения, оно показывает: WM_CLASS(STRING) = "myTkApp", "Mytkapp"

Это совсем не то же самое, что и выбранный вами класс окна; столицы отличаются. Единственный вывод состоит в том, что по какой-то причине выбранный оконный класс (столичный формат) не принимается диспетчером окон.

Когда я сменил вашу пусковую установку на соответствие myTkApp:

StartupWMClass=myTkApp

он работает нормально (для удобства я установил значок firefox, так как у меня нет вашего значка):

[Desktop Entry] Type=Application Terminal=false Name=My Tk Application Exec=/home/jacob/Bureaublad/testapp.py Icon=firefox StartupWMClass=myTkApp

Результат:

[ ! d13]

3
ответ дан 24 July 2018 в 19:42

Другие вопросы по тегам:

Похожие вопросы: