python - PyObjC 使用 NSTableView 崩溃

标签 python pyobjc

我想用 PyObjC 制作 NSTableView。 所以我写了如下代码。 这段代码至少可以工作,我可以看到TableView。 但是当我激活 tableView:objectValueForTableColumn:row:(该方法在下面被注释掉)时,python 由于段错误而崩溃。

我想知道我哪里出错了。谢谢。

class WindowController(object):

    def numberOfRowsInTableView_(self, table):
        return 2000

    #def tableView_objectValueForTableColumn_row_(self, table, column, row):
    #    return 'hi'

    def initMainWindow(self):
        windowRect = NSMakeRect(0.0, 0.0, 300.0, 500.0)
        self.window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
                windowRect,
                NSTitledWindowMask
                    | NSClosableWindowMask
                    | NSResizableWindowMask
                    | NSMiniaturizableWindowMask
                    | NSTexturedBackgroundWindowMask,
                NSBackingStoreBuffered,
                False)
        self.window.setDelegate_(self.delegate)
        self.view = self.initView()
        self.window.contentView().addSubview_(self.view)
        self.window.display()
        self.window.orderFrontRegardless()

    def initView(self):
        tableContainer = NSScrollView.alloc().initWithFrame_(NSMakeRect(0,0,300, 500))
        tableView = NSTableView.alloc().initWithFrame_(NSMakeRect(0,0,300,500))
        column1 = NSTableColumn.alloc().initWithIdentifier_("Col1")
        tableView.addTableColumn_(column1)
        tableView.setDelegate_(self)
        tableView.setDataSource_(self)
        tableView.reloadData()

        tableContainer.setDocumentView_(tableView)
        tableContainer.setHasVerticalScroller_(True)
        return tableContainer

最佳答案

我的问题已经解决了。 我需要实现如下所示的数据源协议(protocol):

class MyDataSource(NSObject, objc.protocolNamed('NSTableViewDataDource')):
    def numberOfRowsInTableView_(self, table):
        return 1000
    def tableView_objectValueForTableColumn_row_(self, table, column, row):
        return 'xyzzy'

然后,在 TableViewController 类中,设置 DataSource,如下所示:

ds = MyDataSource.alloc().init()
myTableView.setDataSource_(ds)

现在一切正常。

关于python - PyObjC 使用 NSTableView 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15519296/

相关文章:

python - Tweepy(Twitter API)不返回所有搜索结果

python - 扩展 Python 和 Objective-C

python - 'if' 语句,不防止 AttributeError : 'NoneType' object has no attribute

python - 在 OSX 10.10.2 上的 Anaconda python 上安装 pyobjc 时出错

python - 纯Python gui 库?

python - 用python下载pdf文件?

python - 使用线帽和线连接的设置绘制线条

python - 如何在 Python Selenium 中获取 WebElement 的类名?

python & CV2 : How do i draw a line on an image with mouse then return line coordinates?

python - Cocotron 与 pyobjc?