2010-08-23 77 views
1

程序啓動時,我添加一些項目到我的列表框這樣的:蟒蛇Tkinter的列表框:增加項目

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中),並完全按照預期,顯示了兩個項目(「畫布」第一)。如果這樣做不是表現您的框中,請編輯您的答案,以提供關於該框的最細節;-)。

+1

ARGH !!好吧,這不是tkinter的錯,但我的。我在程序後期意外刪除了所有項目,並添加了一個空的...對不起:( (好吧,我可愛的小程序有超過1800行,所以我跟蹤發生的一切都很艱難:/) – Rawing 2010-08-23 23:49:58

+3

@Rawing,很高興有幫助(通過顯示它不是Tkinter的錯,但是你的)。爲了保持你的代碼在控制之下,把它分成模塊和功能,比1800行更小的尺寸! – 2010-08-24 00:17:14