gpt4 book ai didi

python - PyObjC 使用 NSTableView 崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:16 26 4
gpt4 key购买 nike

我想用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com