Прокрутка Python Tkinter - PullRequest
       5

Прокрутка Python Tkinter

2 голосов
/ 01 декабря 2011

У меня есть следующий код, и я получаю сообщение об ошибке:

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 Ответ

4 голосов
/ 01 декабря 2011
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(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...