Python Tkinter滚动条

时间:2011-12-01 13:58:51

标签: python grid tkinter

我有以下代码并继续收到错误:

  

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]

如果有任何其他方法来检测用户从滚动条中选择的内容,那么这也是一个很好的解决方案。

1 个答案:

答案 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(...)