我有以下代码,并不断得到错误:
AttributeError:“NoneType”对象没有属性“curselection”
我尝试将项目更改为简单的文本消息,而不是数组中的项目,但这不起作用。所以我不知道该怎么解决。我认为使用grid()
有一些问题,因为我看到的curselection和scrollbox代码示例起作用了—不幸的是,它们没有使用grid geometry manager。任何帮助都非常感谢。
#############################################################################
self.test = win32print.EnumPrinters(win32print.PRINTER_ENUM_NAME, None, 2)
self.array=[]
for self.printer in self.test:
self.array.append(self.printer["pPrinterName"])
###############################################################################
self.box = Pmw.ScrolledListBox(self.Top,
listbox_selectmode='single',
items=(self.array[1], self.array[2], self.array[3], self.array[4], self.array[5],
self.array[6],),
label_text='Select Printer',
labelpos='nw',
listbox_height=6,
hull_width = 200,
hull_height = 200,
selectioncommand=self.selectionCommand).grid(row=12, column=0, ipadx=30, ipady=30)
Button(self.Top, text="ok", command=self.createini).grid( row = 14, column = 0, sticky = W+E+N+S )
def selectionCommand(self):
sels=self.box.curselection()
if len(sels) == 0:
print 'no selection'
else:
print 'Selection:', sels[0]
如果有任何其他方法来检测用户从滚动条中选择了什么,那么这也是一个很好的解决方案。
最佳答案
self.box = Pmw.ScrolledListBox(...).grid(row=12, column=0, ipadx=30, ipady=30)
grid方法返回
None
,因此self.box
设置为None
。因此,在尝试调用self.box.curselection
时会出现上述错误。可以通过如下移动网格调用来解决此问题:self.box = Pmw.ScrolledListBox(...)
self.box.grid(...)