1

我有一个由第二个 WindowController 控制的对话框的辅助窗口(工作表)。出于某种原因,在显示工作表后,这些操作永远不会在 NSObject 子类中调用。我已经确认并重新链接了这些操作。代码运行到 runModalForWindow_ 但随后从未收到 ok 或 cancel 操作。所以这张纸永远不会消失。我在这里想念什么?我似乎无法在他们的网站上找到任何执行 runModalForWindow_ 的 pyobjc 示例...

    @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):

等等。记住,Objective-C 选择器中的每个冒号在 Python 中都变成了一个 _!

于 2010-02-14T12:27:29.527 回答