我有以下代码并继续收到错误:
AttributeError:'NoneType'对象没有属性'curselection'
我尝试将项目更改为简单的文本消息而不是数组中的项目,但这不起作用。所以我不知道如何解决这个问题。我认为使用grid()
存在某种问题,因为我看到的curselection和scrollbox代码示例有用 - 不幸的是,他们没有使用网格几何管理器。非常感谢任何帮助。
#############################################################################
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]
如果有任何其他方法来检测用户从滚动条中选择的内容,那么这也是一个很好的解决方案。
答案 0 :(得分:4)
self.box = Pmw.ScrolledListBox(...).grid(row=12, column=0, ipadx=30, ipady=30)
网格方法返回None
,因此self.box
设置为None
。因此,在尝试呼叫self.box.curselection
时会出现错误。您可以通过移动网格调用来解决此问题:
self.box = Pmw.ScrolledListBox(...)
self.box.grid(...)