Я создал файл mymime.xml
<?xml version='1.0' encoding='utf-8'?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/myapp">
<comment>my format</comment>
<glob pattern="*.myformat"/>
</mime-type>
</mime-info>
и файл myapp.desktop
[Desktop Entry]
Name=MyApp
GenericName=My Generic Name
Comment=a comment
Exec=myapp
Icon=myicon
Terminal=false
Type=Application
Categories=Development;
MimeType=text/myapp;
Name[en_US]=MyApp
. Теперь, когда я щелкаю правой кнопкой мыши файл с окончанием myformat, он предлагает открыть с помощью MyApp, который является поведение я искал! Но в коде python3 (я использую PyQt5), как мне использовать аргумент загрузки, когда файл загружен таким образом? (щелкните правой кнопкой мыши или дважды щелкните файл .myformat)
Хорошо, я решил это со следующим кодом:
class MainWindow(QMainWindow):
def __init__(self, filelist, **kwargs):
openFileAtStart(filelist)
def openFileAtStart(self, filelist):
matching = [s for s in filelist if ".myformat" in s]
if len(matching) > 0:
self.openFileByName(matching)
if __name__ == "__main__":
from sys import argv, exit
from PyQt5.QtWidgets import QApplication
a = QApplication(argv)
MainWindow(argv)
В основном, при открытии, QApplication должен считать argv аргументы и удаляет что-либо связанное с QT, Чем я передаю остающиеся аргументы своему приложению ("MainWindow"), который обработает проверку списка объекты, которые соответствуют моему формату и бросят этот список в мою функцию, которая обрабатывает вводные файлы.