2010-08-23 2 views
1

При запуске программы, добавить некоторые элементы в моем ListBox так:питон Tkinter ListBox: добавление элементов

for widget in WidgetNames: 
    listbox.insert(0, widget) 

WidgetNames, очевидно, список некоторых элементов, например «Кнопка» и «Холст». Дело в том, что в списке не отображаются элементы, которые добавлены с вышеуказанным кодом. Тем не менее,

for widget in WidgetNames: 
    listbox.insert(0, widget) 
    print(listbox.get(0)) 

печатает "Кнопка" и "Холст" и

for widget in WidgetNames: 
    listbox.insert(0, widget) 
print(listbox.size()) 

печатает 2, который, очевидно, является правильное количество элементов, которые он содержит. Все показания списка после добавления элементов - это пустая строка. Я пробовал listbox.see (0) и listbox.index (0), но это не помогло. Любые идеи, почему элементы не добавлены правильно?

ответ

3

Код, который вы показываете, не является проблемой - это должен быть какой-то другой код, который вы есть не показ. Попробуйте воспроизвести свою проблему как можно меньше компаса и отредактируйте свой ответ, чтобы включить этот минимальный код. Вот небольшой скрипт, чтобы показать, что код, который вы показать это на самом деле OK:

from Tkinter import * 

master = Tk() 
listbox = Listbox(master) 
listbox.pack() 

WidgetNames = ['Button', 'Canvas'] 
for widget in WidgetNames: 
    listbox.insert(0, widget) 

mainloop() 

Этот код прекрасно работает на моем окне (Ubuntu 10.4, Python 2.6) и, точно так, как и ожидалось, показывает два элемента («Canvas» первый). Если это не так себя ведут на ваш поле, пожалуйста, отредактируйте свой ответ, чтобы предоставить мельчайшие детали об указанной коробке ;-).

+1

ARGH !! Ладно, это не ошибка tkinter, а моя. Я случайно удалил все элементы abit позже в программе и добавил пустую ... Извините :( (Ну, моя милая маленькая программа имеет более 1800 строк, поэтому я отслеживаю все, что происходит довольно сложно: /) – Rawing

+3

@Rawing, ну, рад помочь (показывая, что это не вина Tkinter, а ваша). Чтобы ваш код находился под контролем, разделите его на модули и функции от _far_ меньших размеров, чем 1800 строк! –

Смежные вопросы