Как связать приложение с существующим использованием типов файлов установщик WiX?

Сообщение об ошибке

имя 'K_w' не определено

blockquote>

, потому что вы забыли пространство имен модуля.

Имя константы pygame.K_w, а не K_w. Константы помещаются в пространство имен модуля pygame.

Либо используйте полное имя константы :

w = control().button(pygame.K_w)

, либо импортируйте константы pygame. См. pygame.locals

. ]
from pygame.locals import *

# [...]

w = control().button(K_w)

Кроме того, переменные w никогда не определяются, потому что control() генерирует объект, но button() не возвращает никакого значения. Кнопка метода должна вернуть self:

class control():
    def button(self, button):
        self.button = button
        return self

Но я рекомендую реализовать конструктор в классе control, а не в методе button (Конечно, вы можете сделать и то и другое):

class control():
    def __init__(self, button=0):
        self.button = button

ctrl = control()
w = control(K_w)
s = control(K_s)
UP = control(K_UP)
DOWN = control(K_DOWN)

Метод key должен вернуть новое значение параметра axis:

class control():

    # [...]

    def key(self, axis, speed):
        if event.type == pygame.KEYDOWN:
            if event.key == self.button:
                axis = speed
        return axis

y1, y2 = 0, 0
while True:
    for event in pygame.event.get():
        ctrl.exit()  
        y1 = w.key(y1, -5)
        y1 = s.key(y1, +5)
        y2 = UP.key(y2, -5)
        Y2 = DOWN.key(y2, +5)

29
задан Erik 14 January 2019 в 17:43
поделиться

1 ответ

Вот полный, полный пример с чуть более подробным и понятным кодом, чем в связанном вопросе, и он должен дать лучший ответ. Совершенно своевременно, поскольку я недавно закончил перенос кода, размещенного ранее, для использования надлежащих элементов ProgId, так что это свежо в моей памяти;)

Что касается «что здесь», вы можете в значительной степени использовать как хочешь :)

<Icon Id="filetype.ico" SourceFile="filetype.ico" />
<Component Id="MyApp.exe" Directory="APPLICATIONFOLDER" Guid="*">
    <File Id="MyApp.exe" Name="MyApp.exe" KeyPath="yes"/>

    <Shortcut Id="startmenuShortcut" Directory="ProgramMenuFolder" Name="MyApp" Icon="$(var.product).ico" IconIndex="0" WorkingDirectory="APPLICATIONFOLDER" Advertise="yes" />

    <!-- Capabilities keys for Vista/7 "Set Program Access and Defaults" -->
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities" Name="ApplicationDescription" Value="!(loc.ApplicationDescription)" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities" Name="ApplicationIcon" Value="[APPLICATIONFOLDER]MyApp.exe,0" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities" Name="ApplicationName" Value="!(loc.ApplicationName)" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\DefaultIcon" Value="[APPLICATIONFOLDER]MyApp.exe,1" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\FileAssociations" Name=".xyz" Value="MyApp.Document" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\MIMEAssociations" Name="application/xyz" Value="MyApp.Document" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\shell\Open\command" Value="&quot;[APPLICATIONFOLDER]MyApp.exe&quot; &quot;%1&quot;" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\RegisteredApplications" Name="MyApp" Value="SOFTWARE\MyApp\Capabilities" Type="string" />

    <!-- App Paths to support Start,Run -> "myapp" -->
    <RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe" Value="[!MyApp.exe]" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe" Name="Path" Value="[APPLICATIONFOLDER]" Type="string" />

    <!-- Extend to the "open with" list + Win7 jump menu pinning  -->
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\MyApp.exe\SupportedTypes" Name=".xyz" Value="" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\MyApp.exe\shell\open" Name="FriendlyAppName" Value="!(loc.ApplicationName)" Type="string" />

    <!-- MyApp.Document ProgID -->
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\MyApp.Document" Name="FriendlyTypeName" Value="!(loc.DescXYZ)" Type="string" />
    <ProgId Id="MyApp.Document" Description="!(loc.DescXYZ)" Icon="filetype.ico" Advertise="yes">
        <Extension Id="xyz">
            <Verb Id="open" Command="!(loc.ExplorerMenuOpenXYZ)" Argument="&quot;%1&quot;" />
            <MIME Advertise="yes" ContentType="application/xyz" Default="yes" />
        </Extension>
    </ProgId>

    <!-- Optional: add an 'Edit with XYZ' to 'right click' even when not associated -->
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\SystemFileAssociations\.xyz\shell\edit.MyApp.exe" Value="!(loc.ExplorerMenuEditXYZ)" Type="string" />
    <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\SystemFileAssociations\.xyz\shell\edit.MyApp.exe\command" Value="&quot;[APPLICATIONFOLDER]MyApp.exe&quot; &quot;%1&quot;" Type="string" />
</Component>
50
ответ дан saschabeaumont 28 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

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