在PyObjC中,如何在使用runModalForWindow之后结束工作表?

2024-09-24 22:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个辅助窗口(一个工作表),用于一个由二级窗口控制器控制的对话框。由于某些原因,在显示工作表之后,这些操作永远不会在NSObject子类中被调用。我已经确认并重新连接了行动。代码运行到runModalForWindow_u,但永远不会收到ok或cancel操作。所以床单永远不会消失。我错过了什么?我似乎找不到任何pyobjc的例子在他们的网站上做了一个runModalForWindow。。。在

    @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

Tags: noselfdefoksenderparentobjcnsapp