我有一个表格,在使用 wxFormBuilder 创建的窗口中显示作业详细信息。该表有一个标记为 Finance 的财务列,在每一行(记录)中包含一个组合框 (SetCellEditor)。
组合框保存数组中的值
finance_options = ['Not Started', 'Preparing Day Sheets', 'Day Sheets Sent', 'PO Received', 'Partially Invoiced', 'Fully Invoiced']
当我更改此下拉列表时,我想调用一个名为 onFinanceChanged 的方法。
我通常会使用 wxFormBuilder 中的选项将该方法分配给 cellChanged 事件,但如果表中的任何单元格发生更改,则会触发该事件。
def populate_job_grid(self, jobs):
finance_options = ['Not Started', 'Preparing Day Sheets', 'Day Sheets Sent', 'PO Received',
'Partially Invoiced', 'Fully Invoiced']
for i in range(0, len(jobs)):
self.jobNumberGrid.InsertRows(0)
row = 0
for job in jobs:
year = arrow.get(job.created_at).date()
job_year = str(year.year)[2:]
self.jobNumberGrid.SetCellValue(row, 0, str(job.job_no))
self.jobNumberGrid.SetCellValue(row, 1, job_year)
self.jobNumberGrid.SetCellValue(row, 2, str(job.site))
self.jobNumberGrid.SetCellValue(row, 3, str(job.client.name))
self.jobNumberGrid.SetCellValue(row, 4, str(job.job_description))
self.jobNumberGrid.SetCellValue(row, 5, str(job.user.name))
created = arrow.get(job.created_at).date()
created_at = datetime.datetime.strptime(str(created), "%Y-%m-%d").strftime("%d-%m-%Y")
self.jobNumberGrid.SetCellValue(row, 6, created_at)
self.jobNumberGrid.SetCellValue(row, 7, job.finance)
finance = wx.grid.GridCellChoiceEditor(finance_options, allowOthers=True)
self.jobNumberGrid.SetCellEditor(row, 7, finance).Bind(self.jobNumberGrid.EVT_GRID_CELL_CHANGED,
self.onFinanceChange)
row = row + 1
如您所见,我尝试将 EVT_GRID_CELL_CHANGED 绑定到单元格,但这给出了“AttributeError:'NoneType'对象没有属性'Bind'”错误。
有任何想法吗?
谢谢保罗。