1

2 番目の WindowController によって制御されるダイアログ用の 2 番目のウィンドウ (シート) があります。何らかの理由で、シートが表示された後、アクションが NSObject サブクラスで呼び出されることはありません。アクションを確認して再リンクしました。コードは runModalForWindow_ まで実行されますが、その後は ok または cancel アクションを受け取りません。そのため、シートが消えることはありません。ここで何が欠けていますか?runModalForWindow_を実行するpyobjcの例がWebサイトで見つからないようです...

    @objc.IBAction
def okSelected(self, sender):
    self.dialogResult = objc.YES
    NSLog("OK")
    #NSApp.endSheet_(self.newTurnWindowOutlet)
    NSApp.stopModalWithCode_(objc.OK)

@objc.IBAction
def cancelSelected(self, sender):
    self.dialogResult = objc.NO
    #NSApp.endSheet_(self.newTurnWindowOutlet)
    NSApp.stopModalWithCode_(objc.NO)

def runSheet(self, parent):
    NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(
        self.newTurnWindowOutlet, parent, None, 
        self.sheetDidEnd_returnCode_contextInfo_, None)
    NSLog("runModelForWindow")
    result = NSApp.runModalForWindow_(self.newTurnWindowOutlet)
    NSLog(str(result))
    NSApp.endSheet_(self.newTurnWindowOutlet)
    self.newTurnWindowOutlet.orderOut_(self)
    return self.dialogResult
4

1 に答える 1

2

あなたのセリフ

    @objc.IBAction
    def okSelected(self, sender):

する必要があります

    @objc.IBAction
    def okSelected_(self, sender):

Python では、Objective-C セレクターのすべてのコロンが _ になることを覚えておいてください。

于 2010-02-14T12:27:29.527 に答える